Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //стр.50 "очередь" - РОЗОВАЯ
- #include "exception.cpp" // подключаем класс QueueException
- template <class Item> // класс-шаблон очередь
- class Queue
- {
- struct Element
- {
- Item inf;
- Element *next;
- Element (Item x):inf(x), next(0)
- {
- }
- };
- Element *head, *tail; // указатели на начало и конец очереди
- public:
- Queue():head(0),tail(0)
- {
- }
- bool Empty() // возвращает true, если очередь пуста, иначе false
- {
- return head==0;
- }
- Item Get()
- {
- if (Empty()) // если очередь пуста, то генерируем исключение
- {
- throw QueueException("QueueException: get - queue empty");
- }
- else // иначе извлекаем элемент из головы очереди
- {
- Element *t=head;
- Item i=t->inf;
- head=t->next;
- if (head==NULL)
- {
- tail=NULL;
- }
- delete t;
- return i;
- }
- }
- void Put(Item data)
- {
- Element *t=tail; // устанавливаем вспомогательный указатель на последний элемент очереди
- tail=new Element (data); // формируется новый элемент, на который будет указывать tail
- if (!head) // если до этого очередь была пуста, то новый элемент является и первым, и последним, поэтому указатель head устанавливаем на tail
- {
- head=tail;
- }
- else
- {
- t->next=tail;
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement