Tobiahao

Kolokwium_Kolejka

Apr 26th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. // Implementacja kolejki
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. struct queue_node {
  6.     int data;
  7.     struct queue_node *next;
  8. };
  9.  
  10. struct queue_pointers {
  11.     struct queue_node *head, *tail;
  12. } fifo;
  13.  
  14. void enqueue(struct queue_pointers *fifo, int data)
  15. {
  16.     struct queue_node *new_node = (struct queue_node*)malloc(sizeof(struct queue_node));
  17.     if(new_node){
  18.         new_node->data = data;
  19.         new_node->next = NULL;
  20.         if(fifo->head == NULL)
  21.             fifo->head = fifo->tail = new_node;
  22.         else{
  23.             fifo->tail->next = new_node;
  24.             fifo->tail = new_node;
  25.         }
  26.     }
  27.     else
  28.         fprintf(stderr, "Błąd w tworzeniu nowego elementu\n");
  29. }
  30.  
  31. int dequeue(struct queue_pointers *fifo)
  32. {
  33.     if(fifo->head){
  34.         struct queue_node *tmp = fifo->head->next;
  35.         int data = fifo->head->data;
  36.         free(fifo->head);
  37.         fifo->head = tmp;
  38.         if(tmp == NULL)
  39.             fifo->tail = NULL;
  40.         return data;
  41.     }
  42.     return -1;
  43. }
  44.  
  45. void print_queue(struct queue_pointers fifo)
  46. {
  47.     while(fifo.head){
  48.         printf("%d ", fifo.head->data);
  49.         fifo.head = fifo.head->next;
  50.     }
  51.     printf("\n");
  52. }
  53.  
  54. int main(void)
  55. {
  56.     enqueue(&fifo, 3);
  57.     enqueue(&fifo, 4);
  58.     enqueue(&fifo, 5);
  59.     print_queue(fifo);
  60.     dequeue(&fifo);
  61.     print_queue(fifo);
  62.    
  63.    
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment