1 #include<stdlib.h> 2 typedef char ele; 3 typedef struct node{ 4 ele e; 5 struct node qnode; 6 }QNode,*Qptr; 7 8 typedef struct{ 9 Qptr front; 10 Qptr rear; 11 }Queue; 12 13 //初始化空队列 14 void initQueue(Queue *q){ 15 q->front=q->rear=(QNode *)malloc(sizeof(QNode)); 16 if(!q->front)exit(0); 17 q->front->qnode=NULL; 18 } 19 20 //插入队列 21 void insert(Queue *q,ele e){ 22 QNode node = (QNode *)malloc(sizeof(QNode)); 23 if(!node)exit(0); 24 node->e=e; 25 node->qnode=NULL; 26 q->rear->qnode=node; 27 q->rear=node; 28 } 29 30 //out queue 31 ele delQueue(Queue *q){ 32 if(q->front==q->rear)return NULL; 33 QNode node = q->front->qnode; 34 ele e = node->e; 35 q->front->qnode=node->qnode; 36 if(q->rear==q)q->rear=q->front; 37 free(node); 38 return e; 39 } 40 41 //clear queue 42 void clearQueue(Queue *q){ 43 if(q->front==q->rear)return ; 44 while(q->front!=q->rear){ 45 QNode node = q->front->qnode; 46 q->front->qnode = node->qnode; 47 free(node); 48 } 49 }