1. typedef int ElemType; 
  2. typedef struct QNode{ 
  3.     ElemType data; 
  4.     Struct QNode *next; 
  5. }QNode,*pQNode; 
  6. typedef struct LinkQueue{ 
  7.     pQNode front,rear; 
  8. }LinkQueue 
  9.  
  10. void initQueue(LinkQueue *pQ){ 
  11.     pQNode head = (pQNode)malloc(sizeof(QNode)); 
  12.      
  13.     head->next = NULL; 
  14.     pQ->front = head; 
  15.     pQ->rear = head; 
  16. bool EnQueue(LinkQueue *pQ,ElemType e){//尾插法类似于  
  17.     pQNode s = (pQNode)malloc(sizeof(QNode)); 
  18.     if(!s){ 
  19.         return false
  20.     } 
  21.     s->data = e; 
  22.     s->next = pQ->rear->next;//等价于s->next = NULL;  
  23.     pQ->rear->next = s; 
  24.     pQ->rear = s; 
  25.     return true
  26. bool DeQueue(LinkQueue *pQ,ElemType *e){ 
  27.     pQNode p; 
  28.      
  29.     if(pQ->front == pQ->rear){ 
  30.         return false
  31.     } 
  32.     p = pQ->front->next; 
  33.     pQ->front->next = p->next; 
  34.     *e = p->data; 
  35.     if(pQ->rear == p){//如果只删除的是最后一个元素!!!!则要重新给尾指针赋值  
  36.         pQ->rear == pQ->front; 
  37.     } 
  38.     free(p); 
  39.     return true