Advertisement
caxapexac

Untitled

Aug 22nd, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <dirent.h>
  3. #include <sys/types.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6.  
  7.  
  8. typedef struct Queue {
  9.     int* data;
  10.     int size;
  11.     int maxSize;
  12.     int head;
  13.     int tail;
  14. } Queue;
  15.  
  16. Queue* InitQueue () {
  17.     Queue* q = malloc(sizeof(Queue));
  18.     q->data = calloc(8, sizeof(int));
  19.     q->maxSize = 8;
  20.     q->size = 0;
  21.     q->head = -1;
  22.     q->tail = -1;
  23. }
  24.  
  25. void Enqueue (Queue* que, int el) {
  26.     if (que->size == 0) {
  27.         que->data[0] = el;
  28.         que->head = 0;
  29.         que->tail = 0;
  30.     } else if (que->size == que->maxSize) {
  31.         printf("realloc\n");
  32.         //realloc
  33.     } else {
  34.         que->head++;
  35.         if (que->head == que->maxSize)
  36.             que->head = 0;
  37.         que->data[que->head] = el;
  38.     }
  39.     que->size++;
  40. }
  41.  
  42. int Dequeue (Queue* que) {
  43.     if (que->size == 0)
  44.     {
  45.         printf("Error\n");
  46.         return 0;
  47.     }
  48.     int res = que->data[que->tail];
  49.     que->data[que->tail] = 0;
  50.     if (que->tail == que->head)
  51.     {
  52.         que->head = -1;
  53.         que->tail = -1;
  54.     } else {
  55.         que->tail += 1;
  56.         if (que->tail == que->maxSize)
  57.             que->tail = 0;
  58.     }
  59.     que->size--;
  60.     return res;
  61. }
  62.  
  63. void PrintQueue (Queue* que) {
  64.     for (int i = 0; i < que->maxSize; i++)
  65.     {
  66.         printf("%d ", que->data[i]);
  67.     }
  68.     printf("\n");
  69. }
  70.  
  71. int main () {
  72.     Queue* q = InitQueue();
  73.     PrintQueue(q);
  74.     Enqueue(q, 2);
  75.     PrintQueue(q);
  76.     Enqueue(q, 3);
  77.     PrintQueue(q);
  78.     Enqueue(q, 4);
  79.     PrintQueue(q);
  80.     Enqueue(q, 5);
  81.     PrintQueue(q);
  82.     Enqueue(q, 6);
  83.     PrintQueue(q);
  84.     Enqueue(q, 7);
  85.     PrintQueue(q);
  86.     Enqueue(q, 8);
  87.     PrintQueue(q);
  88.     Enqueue(q, 9);
  89.     PrintQueue(q);
  90.     int a = Dequeue(q);
  91.     PrintQueue(q);
  92.     a = Dequeue(q);
  93.     PrintQueue(q);
  94.     a = Dequeue(q);
  95.     PrintQueue(q);
  96.     a = Dequeue(q);
  97.     PrintQueue(q);
  98.  
  99.         Enqueue(q, 6);
  100.     PrintQueue(q);
  101.     Enqueue(q, 7);
  102.     PrintQueue(q);
  103.     Enqueue(q, 8);
  104.     PrintQueue(q);
  105.  
  106.     a = Dequeue(q);
  107.     PrintQueue(q);
  108.     a = Dequeue(q);
  109.     PrintQueue(q);
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement