Advertisement
Loloped

стр.50 "очередь"

Jun 15th, 2013
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. //стр.50 "очередь" - РОЗОВАЯ
  2.  
  3. #include "exception.cpp" // подключаем класс QueueException
  4. template <class Item> // класс-шаблон очередь
  5. class Queue
  6. {
  7. struct Element
  8. {
  9. Item inf;
  10. Element *next;
  11. Element (Item x):inf(x), next(0)
  12. {
  13. }
  14. };
  15. Element *head, *tail; // указатели на начало и конец очереди
  16. public:
  17. Queue():head(0),tail(0)
  18. {
  19. }
  20. bool Empty() // возвращает true, если очередь пуста, иначе false
  21. {
  22. return head==0;
  23. }
  24. Item Get()
  25. {
  26. if (Empty()) // если очередь пуста, то генерируем исключение
  27. {
  28. throw QueueException("QueueException: get - queue empty");
  29. }
  30. else // иначе извлекаем элемент из головы очереди
  31. {
  32. Element *t=head;
  33. Item i=t->inf;
  34. head=t->next;
  35. if (head==NULL)
  36. {
  37. tail=NULL;
  38. }
  39. delete t;
  40. return i;
  41. }
  42. }
  43. void Put(Item data)
  44. {
  45. Element *t=tail; // устанавливаем вспомогательный указатель на последний элемент очереди
  46. tail=new Element (data); // формируется новый элемент, на который будет указывать tail
  47. if (!head) // если до этого очередь была пуста, то новый элемент является и первым, и последним, поэтому указатель head устанавливаем на tail
  48. {
  49. head=tail;
  50. }
  51. else
  52. {
  53. t->next=tail;
  54. }
  55. }
  56. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement