C語言指標(八) 佇列

2021-10-01 14:31:27 字數 1583 閱讀 1456

佇列在我們生活中隨處可見,在資料結構中的佇列就是為了解決實際的排隊問題。它同樣關心的是資料的訪問順序,佇列是一種先進先出(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 然後輸出出隊元素,出隊不合...