(一)佇列的鏈式結構體
#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 ...