//------------------- queue2.cpp ------------------------- //------------ source file for unit queue ---------------- #include #include #include #include "queue2.h" //--------------------------- Iplementstion ----------------------------- //--------- queue_init ------------------------- queue_type queue_init (void) { queue_type Q; Q.front = Q.rear = NULL ; return (Q) ; } //--------- queue_insert (Q, x) ---------------- void queue_insert (queue_type &Q, queue_info_type x) { pos_type p; p = (pos_type)malloc(sizeof(struct link_type)); p->info = x; p->next = NULL ; if (Q.front == NULL) Q.front = p ; else Q.rear->next = p; Q.rear = p ; } //----------- queue_remove (Q) --------------------- // assumption: Q is not empty queue_info_type queue_remove (queue_type &Q) { pos_type p ; queue_info_type x ; p = Q.front ; Q.front = Q.front->next ; if (Q.front == NULL) Q.rear = NULL ; x = p->info ; free (p) ; return (x) ; } //------------ queue_top (Q) ---------------------- queue_info_type queue_top (queue_type Q) { return (Q.front->info) ; } //-------------------- queue_empty (Q) -------------------- int queue_empty (queue_type Q) { return (Q.front == NULL) ; // Q.front == Q.rear == NULL; } //-------------------- queue_show (Q) --------------------- void queue_show (queue_type Q) { queue_type Q1 ; queue_info_type x ; Q1 = queue_init () ; printf ("Front --> ") ; while (! queue_empty (Q)) { x = queue_remove (Q) ; printf("%d ",x); queue_insert (Q1, x) ; } while (! queue_empty (Q1)) { x = queue_remove (Q1) ; queue_insert (Q, x) ; } printf (" Rear \n \n") ; }