資料結構之佇列

2022-01-22 01:46:04 字數 2205 閱讀 1728

佇列(queue):具有一定操作約束的線性表

插入和刪除操作:只能在一端插入,而在另一端刪除。

先來先服務

先進先出:fifo

型別名稱:佇列(queue)

資料物件集:乙個有0個或多個元素的有窮線性表。

操作集:長度為maxsize的佇列q∈queue,佇列元素item c elementtype

1、queue creatqueue( int maxsize ):生成長度為maxsize的空佇列;

2、int isfullq( queue q, int maxsize ):判斷佇列q是否已滿;

3、void addq( queue q,elementtype item ):將資料元素item插入佇列q中;

4、int isemptyq( queue q ):判斷佇列q是否為空;

5、elementtype deleteq( qucue q):將隊頭資料元素從佇列中刪除並返回。

佇列的順序儲存結構通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front 以及乙個記錄佇列尾元素位置的變數rear組成。

1 #include 2 #include 3

#define elementtype int

4#define maxsize 4

5 typedef struct qnode*queue;

6struct

qnode7;

12queue createqueue()

1319

//判斷佇列是否滿

20int

isfull(queue q)

2124

void

addq(elementtype item,queue ptrq)

2532

//新增元素

33 ptrq->rear = (ptrq->rear + 1) %maxsize;

34 ptrq->data[ptrq->rear] =item;35}

36//

判斷佇列是否空

37int

isempty(queue q)

3841

//出隊

42elementtype deleteq(queue ptrq)

4350 ptrq->front = (ptrq->front + 1) %maxsize;

51return ptrq->data[ptrq->front];

52 }

view code

佇列的鏈式儲存結構也可以用乙個單鏈表來實現。插入和刪除操作分別在鍊錶二頭進行。

現在有乙個問題,front 【頭指標,刪除元素】和 rear【尾指標,新增元素】 分別指向鍊錶哪一頭?

肯定是front 放在鍊錶前【便於刪除】,rear放在鍊錶後【這個無論表頭、表尾都可以】

1 #include 2 #include 3

#define elementtype int

4 typedef struct qnode*queue;

5struct

node6;

11struct

qnode12;

16queue createqueue()

1722

//佇列是否空

23int

isempty(queue queue)

2428

//入隊

29void

addq(elementtype item, queue queue)

3041

else

//若佇列不為空

4246}47

//出隊

48elementtype deleteq(queue queue)

4956

struct node*frontcell;

57elementtype item;

58 frontcell = queue->front;

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

說明佇列只有乙個元素

6063

else

6467 item = frontcell->data;

68free

(frontcell);

69return

item;

70 }

view code

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...