資料結構 佇列

2021-08-03 00:17:02 字數 3937 閱讀 1761

一、基礎知識

1.佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

2.佇列是一種先進先出的線性表。

3.與棧相同,佇列也是一種重要的線性結構,實現乙個佇列同樣需要順序表鍊錶作為基礎。

4.我們一般用順序表來實現,而佇列我們常用鍊錶來實現,簡稱為鏈佇列。

二、佇列的鏈式儲存結構

將隊頭指標front指向鏈佇列的

頭結點,隊尾指標rear指向終端結點。

空佇列時,隊頭指標front和隊尾指標rear都指向

頭結點。

typedef

char

elemtype

;

typedef

struct

qnode

//結點結構

qnode

;

typedef

struct

qnode

*queueptr

;    //指向結點結構的指標

typedef

struct

//佇列的鍊錶結構

linkqueue

;

三、建立乙個佇列

step.1  在記憶體中生成乙個頭結點。

step.2  將佇列的頭指標和尾指標指向這個生成的頭結點。

//建立乙個佇列

void

initqueue

(linkqueue*q

)

q

->

front

->

next

=null

;

}

四、入佇列操作(尾部插入)

//入佇列操作

void

insertqueue

(linkqueue*q

,elemtype

e)

p

->

data =e

;

p

->

next

=null

;

q

->

rear

->

next =p

;

q

->

rear =p

;

}

五、出佇列操作(頭部刪除)

//出佇列操作

void

deletequeue

(linkqueue*q

,elemtype*e

)

p =q

->

front

->

next

;

*e

=p->

data

;

q

->

front

->

next =p

->

next

;

if(

q->

rear =p

)            //原佇列只有乙個元素的情況,刪除該節點,隊列為空佇列

free(p

);

}

六、銷毀乙個佇列

由於鏈佇列建立在記憶體的動態區,因此當乙個佇列不再有用時,應該及時將他銷毀,以免過多的占用記憶體空間。

//銷毀乙個佇列

void

destoryqueue

(linkqueue*q

)

}

七、求佇列的長度

//求佇列長度

int

lenqueue

(linkqueue*q

)

return

len;

}

八、判斷佇列是否為空

//判斷佇列是否為空

bool

emptyqueue

(linkqueue*q

)

九、輸出佇列元素

//輸出佇列元素

void

disqueue

(linkqueue*q

)

printf

("\n"

);

}

十、獲取隊首、隊尾元素

//獲取隊首元素

elemtype

queuefront

(linkqueue*q

)

//獲取隊尾元素

elemtype

queuerear

(linkqueue*q

)

十一、建立乙個長度由自己決定的佇列並初始化佇列

//建立乙個長度由自己確定的佇列並初始化

void

createqueue

(linkqueue*q

)

scanf

("%c",&

d);

p

->

data =d

;

p

->

next

=null

;

q

->

rear

->

next =p

;

q

->

rear =p

;

}

}

資料結構 佇列

一 佇列的迴圈陣列實現。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...