Little_hobbit

Очередь - цикл.список

Jun 26th, 2020
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct queue_node
  6. {
  7.     queue_node* next;
  8.     int data;
  9. };
  10. typedef queue_node* queue;
  11.  
  12. void InitQueue (queue &q)
  13. {
  14.     q = nullptr; // q = NULL;
  15. }
  16.  
  17. void PutQ (queue &q, int data)
  18. {
  19.     queue new_node = (queue)malloc(sizeof(queue_node));
  20.     new_node->data = data;
  21.  
  22.     if (q == nullptr)
  23.     {
  24.         new_node->next = new_node;
  25.     }
  26.     else
  27.     {
  28.         queue head = q->next;
  29.         q->next = new_node;
  30.         new_node->next = head;
  31.     }
  32.     q = new_node;
  33. }
  34.  
  35. int GetQ(queue &q)
  36. {
  37.     if (q != nullptr)
  38.     {
  39.         queue p = q->next;
  40.         int data = p->data;
  41.  
  42.         if (p == q) q = nullptr;
  43.         else
  44.         {
  45.             q->next = p->next;
  46.         }
  47.  
  48.         free(p);
  49.         return data;
  50.     }
  51.     else
  52.     {
  53.         cout << "Queue is empty" << endl;
  54.         return -1;
  55.     }
  56. }
  57.  
  58. int main()
  59. {
  60.     queue q;
  61.     InitQueue(q);
  62.     PutQ(q, 1);
  63.     PutQ(q, 2);
  64.     PutQ(q, 3);
  65.     cout << GetQ(q) << ' ' << GetQ(q) << ' ' << GetQ(q) << ' ' << endl;
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment