#ifndef LIST_H#define LIST_Htemplate <class T>class list{public: struct list_node // Узел списка состоит из имени и ссылки на предидущий элемент { T name; list_node* prev; }; list(); void push(T);//Добавление в очередь T pop();//Извлечение из очереди void clear();//очистка очередиprivate: list_node * head, * end; int count;};#endif // LIST_H
#include "list.h"template <class T> list<T>::list(){ head=end=0; count=0;}template <class T> void list<T>::push(T new_elem){ list_node* temp = new list_node;//создаем новый элемент и выделяем под него память temp->name = new_elem; temp->prev = 0; if(count!=0) { end->prev = temp; end = temp; } else end=head=temp; count++;}template <class T> T list<T>::pop(){ list_node* temp = new list_node; temp=head; head=head->prev; T deleted; deleted = temp->name; delete temp; count--; return deleted;}template <class T> void list<T>::clear(){ while(head!=0) pop();}
#include <QtGui/QApplication>#include "widget.h"#include "list.h"int main(int argc, char *argv[]){ list<int> new_list;}