c語言實現鏈佇列的基本功能

2021-08-22 07:13:11 字數 1798 閱讀 8601

鏈佇列,實際上是乙個帶有頭指標和尾指標的單鏈表,頭指標指向頭節點(不存放資料),尾指標指向隊尾節點,雖然用頭指標可以確定乙個單鏈表,但是插入操作是在隊尾進行,如果沒有尾指標,會變得複雜

初始化:

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...