佇列在我們生活中隨處可見,在資料結構中的佇列就是為了解決實際的排隊問題。它同樣關心的是資料的訪問順序,佇列是一種先進先出(fifo)的資料結構。
同樣,這樣的資料結構用單向鍊錶實現相比於用陣列實現更加有優勢。
#include
#include
struct node
;struct queue
;struct queue*
init()
qe->head =
(struct node*
)malloc
(sizeof
(struct node));
if(qe->head ==
null
) qe->head->next =
null
; qe->head->data =0;
qe->tail = qe->head;
return qe;
}//入隊
intin
(struct queue *qu,
int data)
struct node *pnew =
null
; pnew =
(struct node*
)malloc
(sizeof
(struct node));
if(pnew ==
null
) pnew->data = data;
pnew->next =
null
; qu->tail->next = pnew;
qu->tail = qu->tail->next;
return1;
}int
is_empty_linkqueue
(struct queue *qe)
return
((qe->head == qe->tail)?1
:0);
}//出隊
intout
(struct queue *qe)if(
is_empty_linkqueue
(qe)==1
)struct node *pdel =
null;if
(qe->head->next ==
null
) pdel = qe->head->next;
qe->head->next = pdel->next;
ret = pdel->data;
free
(pdel)
; pdel =
null
;return ret;
}int
main()
for(i =
0; i <
10; i++
)}
以上是用單向鍊錶的方式實現的佇列,用陣列實現佇列的例子我在此就不給出了。由於用陣列實現佇列在出隊是需要整體移動全隊元素,執行效率較低,所以我推薦使用鍊錶的方式實現佇列。 C語言學習(十) 佇列
佇列是特殊的線性表 隊頭 front 取出資料的一端 隊尾 rear 放入資料的一端 迴圈佇列 1.佇列順序儲存的不足 避免出現只有乙個元素時,隊頭和隊尾的重合處理麻煩,引入front指向隊頭元素,rea指向隊尾元素的下乙個位置 front rear時,佇列不是還剩乙個元素,而是空佇列 2.迴圈佇列...
C語言 20191011 佇列的鍊錶實現
include include typedef struct node 定義節點 node typedef struct queue 定義佇列 queue queue createqueue 建立乙個空佇列 queue enqueue int x,queue q enqueue入隊 else ret...
03 佇列操作
時間限制 100ms 記憶體限制 100kb 描述假設以帶頭節點的迴圈鍊錶表示佇列,並且只設乙個指標指向隊尾元素節點 不設頭指標 節點元素這裡設為整型,編寫佇列的初始化 入隊和出隊演算法。其中入隊元素個數n及其節點資料,和出隊元素個數m都是從鍵盤輸入 預設n m都不小於0 然後輸出出隊元素,出隊不合...