鏈佇列,實際上是乙個帶有頭指標和尾指標的單鏈表,頭指標指向頭節點(不存放資料),尾指標指向隊尾節點,雖然用頭指標可以確定乙個單鏈表,但是插入操作是在隊尾進行,如果沒有尾指標,會變得複雜
初始化:
void init(pqueue pq)
注意:(1).為頭指標和尾指標申請記憶體
入隊:
void enqueue(pqueue pq,int x)
注意:(1).入隊是在隊尾進行,所以需要尾指標
出隊:
void dequeue(pqueue pq,int *e)
注意:(1).出隊是在隊頭進行
(2).記得free(ptemp),因為一開始申請了一塊記憶體
(3).用e來儲存資料,方便在main函式中處理,int *p是定義乙個指標p,p是乙個位址,所以p=&a(或者一開始就用int *p=&a),然後printf(「%d」,*p),是輸出變數a的值,printf("%d",&p),是輸出乙個位址,因為指標p也是乙個變數,也有自己的位址
求佇列長度:
int queuelength(pqueue pq)
printf("\n");
return count;
}
注意:(1).while迴圈要跳出,p要等於null,這就需要入隊把pnew->next=null
遍歷佇列:
void show_queue(pqueue pq)
}
main函式:
void main()
printf("\n_____出隊5個元素_____");
for(int i=0;i<5;i++)
gethead(&q,&e);
printf("\n當前隊頭為:%d\n",e);
system("pause");
}
(2).入隊出隊可以用for迴圈提高效率,同時通過傳入&x,把x的值傳出到main函式,方便呼叫
(3).xx刪除,當前還有xx個元素,從頭到尾是xx,這樣一目了然
完整**如下:
#include#include#includetypedef struct nodenode,*pnode;
typedef structqueue,*pqueue;
void init(pqueue pq)
int queuelength(pqueue pq)
printf("\n");
return count;
}void enqueue(pqueue pq,int x)
void dequeue(pqueue pq,int *e)
void show_queue(pqueue pq)
}void gethead(pqueue pq,int *e)
void main()
printf("\n_____出隊5個元素_____");
for(int i=0;i<5;i++)
gethead(&q,&e);
printf("\n當前隊頭為:%d\n",e);
system("pause");
}
C語言實現鏈式佇列的基本功能
rear指向隊尾部元素,front指向隊頭元素的前乙個 鏈式佇列相當與鍊錶很相似,有著頭指標和頭節點,傳引數也都是傳的指標,但是不同的是這裡的指標是結構體指標,可以看成二級指標 所以在列印等函式中需要有個中間變數,否則會改變front和rear的指向 include include struct b...
C語言實現順序佇列的基本功能
front指向佇列的隊頭元素,rear指向隊尾元素的下乙個。因為鏈式佇列有頭節點,順序佇列沒得頭節點 為了判斷是否未滿,最後乙個空間不放元素 include include define max 100 struct book typedef struct node sqqueue intis em...
C 實現鏈示佇列基本功能
include include include using namespace std typedef int status typedef int elmetype 鏈式佇列節點定義 typedef struct qnode qnode,queueptr 鏈示佇列定義 typedef struct...