GrimHansl

Untitled

Mar 13th, 2021
1,014
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. typedef int DataType;
  5. class Queue
  6. {
  7.     struct element
  8.     {
  9.         DataType data;
  10.         element * next;
  11.     } *front, *rear; //индексы головы и хвоста
  12. public:
  13.     Queue ()
  14.     {
  15.         front=rear=NULL;
  16.     }
  17.     ~Queue ();        //деструктор (освобождение памяти)
  18.     int Empty (void); //проверка на пустоту
  19.     int Full (void); //проверка на полноту заполнения
  20.     DataType Front (void); //неразрушающее чтение элемента
  21.     int EnQueue (DataType x); //добавление элемента в очередь
  22.     DataType DeQueue (void); //извлечение элемента из очереди
  23. };
  24.  
  25. int main (void)
  26. {
  27.     Queue q;
  28.     int i;
  29.     for (i=1; i<=6; i++)
  30.         q.EnQueue (i);
  31.     std::cout<<q.DeQueue()<<' ';
  32.     std::cout<<q.DeQueue()<<' ';
  33.     for (i=1; i<6; i++)
  34.         q.EnQueue (i);
  35.     while (!q.Empty())
  36.         std::cout<<q.DeQueue()<<' ';
  37.     system("pause");
  38.     return 0;
  39. }
  40.  
  41. int Queue::Empty(void)
  42. {
  43.     return front==NULL;
  44. }
  45.  
  46. int Queue::Full(void)
  47. {
  48.     element *temp = new (std::nothrow) element;
  49.     if (temp==NULL) return 1;
  50.     delete temp;
  51.     return 0;
  52. }
  53.  
  54. DataType Queue::Front (void)
  55. {
  56.     return front->data;
  57. }
  58.  
  59. int Queue::EnQueue (DataType x)
  60. {
  61.     element * temp = new (std::nothrow) element;
  62.     if (temp==NULL) return 1;
  63.     temp->data = x;
  64.     temp->next = NULL;
  65.     if (front==NULL)
  66.         front = rear = temp;
  67.     else
  68.     {
  69.         rear->next = temp;
  70.         rear = rear->next;
  71.     }
  72.     return 1;
  73. }
  74.  
  75. DataType Queue::DeQueue (void)
  76. {
  77.     DataType temp = front->data;
  78.     element * tmp = front;
  79.     front = front->next;
  80.     delete tmp;
  81.     return temp;
  82. }
  83.  
  84. Queue::~Queue ()
  85. {
  86.     element * temp = front;
  87.     while (front)
  88.     {
  89.         temp = front;
  90.         front = front->next;
  91.         delete temp;
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment