C語言描述佇列的實現及操作(鍊錶實現)

2022-09-06 07:18:09 字數 2506 閱讀 5812

//

佇列的單鏈表實現

//頭節點:哨兵作用,不存放資料,用來初始化佇列時使隊頭隊尾指向的地方

//首節點:頭節點後第乙個節點,存放資料

#include

#include

#include

typedef

int elementype; //

定義資料型別

//定義節點結構

typedef struct

node node, *pnode;

//定義佇列結構體

typedef struct

qnode queue, *pqueue;

//宣告函式體

void initqueue(pqueue); //

建立佇列函式

bool isemptyqueue(pqueue); //

判斷佇列是否為空函式

void insertqueue(pqueue, int val); //

入隊函式

void deletequeue(pqueue,int * val); //

出隊函式

void destroyqueue(pqueue); //

摧毀佇列函式

void tr**ersequeue(pqueue); //

遍歷佇列函式

void clearqueue(pqueue); //

清空佇列函式

int lengthqueue(pqueue); //

求佇列長度函式

//主函式

intmain()

//定義佇列初始化函式

void

initqueue(pqueue queue)

queue->front->next = null; //

初始佇列頭節點指標指向為空

printf("

建立佇列成功...\n");

}//定義判斷佇列是否為空函式

bool

isemptyqueue(pqueue queue)

else

}//定義入隊函式

//從佇列尾部插入資料val

void insertqueue(pqueue queue,int

val)

p->element = val; //

把要插入的資料放到節點資料域

p->next = null; //

新節點指標指向為空

queue->rear->next = p; //

使上乙個佇列尾部的節點指標指向新建的節點

queue->rear = p; //

更新隊尾指標,使其指向佇列最後的節點

printf("

插入資料 %d 成功...\n

", val);}//

定義出隊函式

//從佇列的首節點開始出隊

//若出隊成功,用val返回其值

void deletequeue(pqueue queue,int*val)

pnode p= queue->front->next; //

臨時指標

*val = p->element; //

儲存其值

queue->front->next = p->next; //

更新頭節點

if (queue->rear==p)

queue->rear = queue->front;

free(p); //

釋放頭佇列

p = null; //

防止產生野指標

printf("

出棧成功,出棧值為 %d\n

", *val);}//

定義佇列遍歷函式

void

tr**ersequeue(pqueue queue)

pnode p = queue->front->next; //

從佇列首節點開始遍歷(非頭節點,注意區分)

printf("

遍歷佇列結果為:");

while (p !=null)

printf("\n

");}//

定義佇列的摧毀函式

//刪除整個佇列,包括頭節點

void

destroyqueue(pqueue queue)

printf(

"摧毀佇列成功...\n");

}//定義清空佇列函式

void

clearqueue(pqueue queue)

printf(

"清空佇列成功...\n");

}

執行結果

C語言鍊錶實現佇列

課本上只給了佇列的陣列實現,關於鍊錶實現的留做了作業,現實現如下 queueli.h typedef int elementtype start fig3 57.txt ifndef queueli h define queueli h struct node struct qnode typede...

C語言 順序表 鍊錶 佇列 棧 及基本操作

include include include typedef struct vectorvector vector init int n intexpand vector vec if extr size 0 return0 vec data p vec size extr size return...

佇列 鍊錶 C語言實現

佇列 queue 的基本概念 佇列的影象模擬 佇列的基本操作 初始化佇列,判空,入隊,出隊,讀隊頭元素,清空佇列 順序儲存存在的問題 如果用順序儲存結構,假設陣列最大值為maxsize,我們怎麼判斷隊空呢。我們可以利用用隊尾 rear 和隊頭 front 的相對位置來進行判斷,如果rear fron...