Advertisement
VladimirKostovsky

Лаба 2. Linux rules

Mar 28th, 2022
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. struct list
  4. {
  5.     int el;
  6.     list *next;
  7. };
  8.  
  9. struct queue
  10. {
  11.     list *beg, *end;
  12. };
  13.  
  14. void putToQueue(queue *q, int iEl)   //добавить в очередь
  15. {
  16.     list *tmp;
  17.     tmp = new list;
  18.     tmp->next = NULL;
  19.     tmp->el = iEl;
  20.     if(q->end != NULL)
  21.         q->end->next = tmp;
  22.     else
  23.         q->beg = tmp;
  24.     q->end = tmp;
  25. }
  26.  
  27. int takeFromQueue(queue *q, int *iEl) // взять из очереди
  28. {
  29.     if(q->beg == NULL) return 0;
  30.     list *tmp;
  31.     tmp = q->beg;
  32.     *iEl = tmp->el;
  33.     q->beg = tmp->next;
  34.     delete tmp;
  35.     if(q->beg == NULL) q->end = NULL;
  36.     return 1;
  37. }
  38.  
  39. queue *CreateQueue()            //создать очередь
  40. {
  41.     queue *q;
  42.     q = new queue;
  43.     q->beg = NULL;
  44.     q->end = NULL;
  45.     return q;
  46. }
  47.  
  48. int isQueueEmpty(queue *q)      //проверка очереди на пустоту
  49. {
  50.     if(q->beg == NULL) return 1;
  51.     return 0;
  52. }
  53.  
  54. int ClearQueue(queue *q)        //очистка очереди
  55. {
  56.     if(q->beg == NULL) return 0;
  57.     list *tmp, *t;
  58.     tmp = q->beg;
  59.     while(tmp->next != NULL)
  60.     {
  61.         t = tmp;
  62.         tmp = t->next;
  63.         delete t;
  64.     }
  65.     q->beg = NULL;
  66.     q->end = NULL;
  67.     return 1;
  68. }
  69.  
  70. void PrintQueue(queue *q)       //вывестии очередь на экран
  71. {
  72.     printf("\n");
  73.     queue *tmp = CreateQueue();
  74.     int iEl;
  75.     while(!isQueueEmpty(q))
  76.     {
  77.         takeFromQueue(q, &iEl);
  78.         printf("%d ", iEl);
  79.         putToQueue(tmp, iEl);
  80.     }
  81.     while(!isQueueEmpty(tmp))
  82.     {
  83.         takeFromQueue(tmp, &iEl);
  84.         putToQueue(q, iEl);
  85.     }
  86. }
  87. int main()
  88. {
  89.     int i;
  90.     queue *q = CreateQueue();
  91.     printf(".......Put Elems..............");
  92.     for(i=30; i<40; i++)
  93.     {
  94.         putToQueue(q, i);
  95.         PrintQueue(q);
  96.     }
  97.     printf("\n......Take Elems...............");
  98.     while(!isQueueEmpty(q))
  99.     {
  100.         takeFromQueue(q, &i);
  101.         PrintQueue(q);
  102.     }
  103.     printf("\n........Put Elems.............");
  104.     for(i=30; i<35; i++)
  105.     {
  106.         putToQueue(q, i);
  107.         PrintQueue(q);
  108.     }
  109.     printf("\n........Clear queue.............");
  110.     ClearQueue(q);
  111.     PrintQueue(q);
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement