home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / CataniaB / teach-act / esempi / Comp-Sep / queue.c < prev    next >
C/C++ Source or Header  |  1997-04-22  |  720b  |  46 lines

  1. #include <stdio.h>
  2. #include "queue.h"
  3.  
  4. char is_empty_queue(queue *p) { return(p->head->next == p->tail); }
  5.  
  6. list lmakecell(void) { return (list) malloc (sizeof (struct qcell));}
  7.  
  8. void empty_queue(queue *p)
  9. {
  10.     p->head = lmakecell();
  11.     p->tail = lmakecell();
  12.     p->head->next=p->tail;
  13.  
  14. void destroy(queue *p)
  15. {
  16.     free(p->tail);
  17.     free(p->head);    
  18.  
  19. void enqueue(generic el,queue *p)
  20.   list q;
  21.   
  22.   p->tail->el=el;
  23.   q =lmakecell();    
  24.   p->tail->next=q;  
  25.   p->tail=q;
  26.  
  27. generic dequeue (queue *p)
  28.   list q;
  29.   generic e;
  30.   if (!is_empty_queue(p))
  31.     {      
  32.       q=p->head->next; 
  33.       e = q->el;
  34.       p->head->next=q->next; 
  35.       free(q);      
  36.       return (e);
  37.     }
  38.   return NULL; 
  39.  } 
  40.  
  41.