資料結構 佇列

2021-09-01 12:30:10 字數 2912 閱讀 8914

定義:

和棧一樣,是一種操作受限的線性表,其限制為只允許在一頭插入(入隊)在另一頭刪除(出隊)。插入的一端叫隊尾,刪除的一端叫隊首。

特點:

先進先出,像是過獨木橋,先上去的先下來。

儲存結構:

1、順序儲存:

以陣列來實現,指向隊首和隊尾的指標則是陣列首元素和尾元素的下標。

隊空條件:q->front= =q->rear。

隊滿條件:q->rear= =n-1(data陣列的最大下標)。

元素n入隊操作:先將rear加1,然後將元素n放在data陣列的rear位置。

出隊操作:先將front加1,然後取出data陣列中front位置的元素。

定義如下:

#define n 10

typedef struct lei

lei;

注:用普通的陣列儲存佇列元素時,經過出隊操作後的空間無法重複利用。所以,為了不必要的空間浪費,一般把陣列data定義成環形陣列。這樣的話隊空條件將發生變化,有興趣的可自行了解。2、鏈式儲存:以煉表來實現資料儲存,通常為單鏈表。

隊空條件:q->rear= =null(也可以是q->front= =null)。

隊滿條件:這個可以不考慮,因為鍊錶的可擴充套件性。

元素n進隊操作:新建乙個結點存放n(由p指向它),將節點p插入做為尾節點。

出隊操作:取首結點的data值,並將其刪除。

定義如下:

typedef struct qnode

datanode;

typedef struct lei

lei;

注:佇列的陣列實現比較麻煩,需要考慮各種邊界情況,所以通常使用鍊錶形式來實現佇列。為了方便實現,鏈式佇列中的front表示鍊錶的頭節點,而front的next才表示隊頭。基本操作:

initqueue

(q);

//佇列初始化

destroyqueue

(q);

//銷毀佇列

push

(q,n)

;//入隊,在隊尾插入元素n

pop(q,n)

;//出隊,在隊首刪除元素,並將其值賦給n返回

empty

(q);

//判斷是否為空

操作函式實現(順序儲存結構)

void

initqueue

(lei *

&q)//佇列初始化

void

destroyqueue

(lei *

&q)//銷毀佇列

bool push

(lei *

&q,int n)

//入佇列

bool pop

(lei *

&q,int &n)

//出佇列,並返回其值

bool empty

(lei *q)

//判斷佇列是否為空

操作函式實現(線性儲存)

void

initqueue

(lei *

&q)//初始化佇列

void

destroyqueue

(lei *

&q)//銷毀佇列

free

(pre)

;//釋放最後乙個資料結點

}free

(q);

//釋放鏈隊結點

}bool empty

(lei *q)

//判斷是否為空

void

push

(lei *

&q,int n)

//入隊,在隊尾插入新元素

else

//不為空,將新結點連到隊尾,並用rear指向它

}bool pop

(lei *

&q,int &n)

//出隊,並返回元素值

**示例:以順序儲存為例

int main()

,n=11

,i;initqueue

(q);

for(i=

0;i<

10;i++

)printf

("輸出佇列中全部元素:\n");

for(i=

0;i<

10;i++

)printf

("\n\n");

printf

("入隊:%d\n"

,n);

push

(q,n)

;printf

("輸出佇列中全部元素:\n");

while(!

empty

(q))

printf

("\n\n");

printf

("判斷佇列是否為空\n");

if(empty

(q))

else

printf

("佇列不為空\n");

destroyqueue

(q);

return0;

}

輸出如下:

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...