193030

DR5 01. Cyclic Queue WIP to check

Nov 20th, 2021 (edited)
94
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.53 KB | None
  1. // Циклична опашка
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. struct Queue
  5. {
  6.     int size;
  7.     int front;
  8.     int rear;
  9.     int* Q;
  10. };
  11. void create(struct Queue* q, int size)
  12. {
  13.     q->size = size;
  14.     q->front = q->rear = 0;
  15.     q->Q = (int*)malloc(q->size * sizeof(int));
  16. }
  17. void enqueue(struct Queue* q, int x)
  18. {
  19.     if ((q->rear + 1) % q->size == q->front)
  20.         return; // опашката е пълна
  21.     else
  22.     {
  23.         q->rear = (q->rear + 1) % q->size;
  24.         q->Q[q->rear] = x;
  25.     }
  26. }
  27. int dequeue(struct Queue* q, int* number)
  28. {
  29.     int x = -1;
  30.  
  31.     if (q->front == q->rear)
  32.         return 0; // опашката е празна
  33.     else
  34.     {
  35.         q->front = (q->front + 1) % q->size;
  36.         x = q->Q[q->front];
  37.         *number = x;
  38.     }
  39.     return 1;
  40. }
  41. void Display(struct Queue q)
  42. {
  43.     int i = q.front + 1;
  44.  
  45.     do
  46.     {
  47.         printf("%d ", q.Q[i]);
  48.         i = (i + 1) % q.size;
  49.     } while (i != (q.rear + 1) % q.size);
  50.  
  51.     printf("\n");
  52. }
  53. int main()
  54. {
  55.     struct Queue q;
  56.     int size = 7;
  57.     create(&q, size); // Създаване на опашка
  58.     // елементите на опашката = size -1
  59.  
  60.     // Добавяне на елементи
  61.     enqueue(&q, 10);
  62.     enqueue(&q, 11);
  63.     enqueue(&q, 12);
  64.     enqueue(&q, 13);
  65.     enqueue(&q, 14);
  66.     enqueue(&q, 15);
  67.    
  68.     Display(q); // принтиране на всички елементи в опашката
  69.  
  70.     int number = 0;
  71.     dequeue(&q, &number);
  72.     printf("%d \n", number); // принтиране на извлеченото число
  73.     Display(q); // принтиране на всички елементи в опашката
  74. }
RAW Paste Data Copied