隊列的鏈式存儲結構

 

  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章