// templist.cpp // Шаблон связных списков #include using namespace std; /////////////////////////////////////////////////////////// template //структура link struct link //элемент списка //( внутри этой структуры определение link означает // link ) { TYPE data; //элемент данных link* next; //указатель на следующий элемент }; /////////////////////////////////////////////////////////// template //класс linklist class linklist //список ссылок //(внутри этого класса linklist означает linklist) { private: link* first; //указатель на первую ссылку public: linklist() //конструктор без аргументов { first = NULL; } //первой ссылки нет //примечание: можно вписать еще деструктор; для упрощения //листинга, не приводим его здесь. void additem(TYPE d); //добавить данные (одна ссылка) void display(); //вывести все ссылки }; /////////////////////////////////////////////////////////// template void linklist::additem(TYPE d) //добавление данных { link* newlink = new link; //создать новую // ссылку newlink->data = d; //занести туда данные newlink->next = first; //то есть ссылку на следующий элемент first = newlink; //теперь первая ссылка указывает на //данную ссылку } //--------------------------------------------------------- template void linklist::display() //вывод всех ссылок { link* current = first; //указатель – на первую ссылку while( current != NULL ) //выйти после последней ссылки { cout << endl << current->data; //вывести на экран current = current->next; //сдвинуться на следующую ссылку } } //--------------------------------------------------------- int main() { linklist ld; //ld - объект linklist ld.additem(151.5); //добавить три числа double в список ld ld.additem(262.6); ld.additem(373.7); ld.display(); //вывести весь список ld linklist lch; //lch - объект linklist lch.additem('a'); //три символа (char) – в список lch lch.additem('b'); lch.additem('c'); lch.display(); //вывести весь список lch cout << endl; return 0; }