佇列的鏈式實現(c語言

2021-10-06 21:02:08 字數 4115 閱讀 3127

(一)佇列的鏈式結構體

#define eletype int 

#define status int

typedef

struct queuenode

queuenode,

*linkqueuepoi;

typedef

struct linkqueue

linkqueue;

(二)建立乙個空佇列
status initlinkqueue

(linkqueue* queue)

queuenode* node =

(queuenode*

)malloc

(sizeof

(queuenode));

node->next =

null

; queue->front = queue->rear = node;

return ok;

}

(三)入棧
status cleaerlinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

queuenode* node = queue->front->next;

while

(node)

free

(node)

; node = queue->front->next;

}return ok;

}

(四)判空
status emptylinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

return false;

}

(五)隊長
int

lengthlinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

queuenode* node = queue->front->next;

int num =0;

while

(node)

return num;

}

(六)建立乙個空佇列
status addqueue

(linkqueue* queue,eletype e)

queuenode* node =

(queuenode*

)malloc

(sizeof

(queuenode));

if(!node)

node->next =

null

; node->e = e;

queue->rear->next = node;

queue->rear = node;

return ok;

}

(七)出隊
status delqueue

(linkqueue* queue, eletype *e)

queuenode* node = queue->front->next;

*e = node->e;

queue->front->next = node->next;

if(node = queue->rear)

return ok;

}

(八)輸出
void

printflinkqueue

(linkqueue* queue)

queuenode* node = queue->front->next;

while

(node)

printf

("\n");

return

;}

(九)呼叫的主函式
int

main

(int argc,

char

*ar**)

全部的組合**
#include

#include

#include

#include

#define queuesize 10

#define error 0

#define ok 1

#define true 1

#define false 0

#define eletype int

#define status int

typedef

struct queuenode

queuenode,

*linkqueuepoi;

typedef

struct linkqueue

linkqueue;

status initlinkqueue

(linkqueue* queue)

queuenode* node =

(queuenode*

)malloc

(sizeof

(queuenode));

node->next =

null

; queue->front = queue->rear = node;

return ok;

}status cleaerlinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

queuenode* node = queue->front->next;

while

(node)

free

(node)

; node = queue->front->next;

}return ok;

}status emptylinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

return false;

}int

lengthlinkqueue

(linkqueue* queue)

//空鏈佇列

if(queue->front == queue->rear)

queuenode* node = queue->front->next;

int num =0;

while

(node)

return num;

}s addqueue

(linkqueue* queue,eletype e)

queuenode* node =

(queuenode*

)malloc

(sizeof

(queuenode));

if(!node)

node->next =

null

; node->e = e;

queue->rear->next = node;

queue->rear = node;

return ok;

}status delqueue

(linkqueue* queue, eletype *e)

queuenode* node = queue->front->next;

*e = node->e;

queue->front->next = node->next;

if(node = queue->rear)

return ok;

}void

printflinkqueue

(linkqueue* queue)

queuenode* node = queue->front->next;

while

(node)

printf

("\n");

return;}

intmain

(int argc,

char

*ar**)

C語言實現鏈式佇列

鏈式佇列,簡稱 鏈佇列 即使用鍊錶實現的佇列儲存結構。鏈式佇列的實現思想同順序佇列類似,只需建立兩個指標 命名為 top 和 rear 分別指向鍊錶中佇列的隊頭元素和隊尾元素,如下圖所示 所示為鏈式佇列的初始狀態,此時佇列中沒有儲存任何資料元素,因此 top 和 rear 指標都同時指向頭節點。在建...

鏈式佇列 C語言實現

鏈式佇列的儲存結構 我們知道,佇列是操作受限制的線性表,佇列有隊頭和隊尾,插入元素的一端稱為隊頭,刪除元素的一端稱為隊尾。練市佇列的隊頭指標指向當前佇列的隊頭結點位置,隊尾指標指向佇列的當前隊尾結點位置。對於不帶頭結點的鏈式佇列,出佇列時可直接刪除隊頭指標所指的結點,因此,鏈式佇列不帶頭結點更方便。...

C語言實現鏈式佇列

include link queue.h 建立入列 出列顯示所有資料 是否為空 釋放佇列 建立1 void create link queue 1 plinkqueue h h len 0 h header null h tail null 建立2 void create link queue 2 ...