queue.c

Go to the documentation of this file.
00001 
00017 #include "queue.h"
00018 #include <stdlib.h>
00019 
00023 static queue* kdqueue = NULL;
00024 
00030 void qbuild
00031 (
00032    void
00033 )
00034 {
00035    kdqueue = (queue*)malloc(sizeof(queue));
00036    kdqueue->first = NULL;
00037    kdqueue->last = NULL;
00038    
00039    return;
00040 }
00041 
00052 void qinsert
00053 (
00054    qnode*   new
00055 )
00056 {
00057    new->next = NULL;
00058    if( kdqueue->first == NULL )
00059    {
00060       kdqueue->first = new;
00061       kdqueue->last = new;
00062    }
00063    else
00064    {
00065       kdqueue->last->next = new;
00066       kdqueue->last = new;
00067    }
00068    
00069    return;
00070 }
00071 
00080 qnode* qretrieve
00081 (
00082    void
00083 )
00084 {
00085    return kdqueue->first;
00086 }
00087 
00096 void qdelete
00097 (
00098    void
00099 )
00100 {
00101    qnode*   p  =  NULL  ; // auxiliary pointer
00102    
00103    if( kdqueue->first->next == NULL )
00104    {
00105       free(kdqueue->first->info);
00106       free(kdqueue->first);
00107       kdqueue->first = NULL;
00108       kdqueue->last = NULL;
00109    }
00110    else
00111    {
00112       p = kdqueue->first;
00113       kdqueue->first = p->next;
00114       free(p->info);
00115       free(p);
00116    }
00117    
00118    return;
00119 }
00120 
00130 int qempty
00131 (
00132    void
00133 )
00134 {
00135    return kdqueue->first == NULL;
00136 }
00137 
00146 void qdestroy
00147 (
00148    void
00149 )
00150 {
00151    qnode*   p  =  NULL  ;
00152    qnode*   q  =  NULL  ;
00153    
00154    p = kdqueue->first;
00155    while( p )
00156    {
00157       q = p;
00158       p = p->next;
00159       free(q->info);
00160       free(q);
00161    }
00162    free(kdqueue);
00163    kdqueue = NULL;
00164    
00165    return;
00166 }
Generated on Tue Nov 16 18:24:44 2010 by  doxygen 1.6.3