資料結構 佇列

2021-10-10 08:32:12 字數 1908 閱讀 9769

一、隊的定義

只允許在一段進行插入,另一端進行刪除的線性表,又稱為先進先出線性表,簡稱fifo 。在隊尾新增乙個元素,稱為入隊,在隊頭刪除乙個元素,稱為出隊。

隊頭:允許進行刪除操作的一端。

隊尾:允許進行插入操作的一端。

空隊:不含任何資料元素的隊。

二、佇列的建立、初始化、新增和清除元素

#include 

#include

#define queuesize

100//隊的容量

typedef int datatype;

typedef struct seqqueue

seqqueue;

void

initqueue

(seqqueue *q)

//隊的初始化

void

clearqueue

(seqqueue *q)

//清除隊中元素

int main()

三、判斷隊是否空判斷方法為判斷隊頭指標和隊尾指標是否相等。

bool queueempty

(seqqueue *q)

//判斷隊是否為空

四、判斷隊是否為滿

bool queuefull

(seqqueue *q)

五、獲取隊頭元素獲取隊頭元素時,隊頭指標不會移動,獲取的永遠是下標為0的元素。

status gethead

(seqqueue *q,datatype *e)

*e = q-

>data[q-

>front]

;returnok;

}int main()

六、出隊與獲取隊頭元素區別在於,出隊時隊頭指標將向後面乙個下標移動,假如第一次出隊獲取下標為0的元素,第二次出隊獲取的則是下標為1的元素。

status dequeue

(seqqueue *q,datatype *e)

//出隊

*e = q-

>data[q-

>front]

;//移動隊頭指標形成乙個迴圈佇列,比如隊頭指標指向0時,(0+1)%100,隊頭指標指向1

q->front =

(q->front +1)

%queuesize

;returnok;

}int main()

七、向隊中新增元素

status enqueue

(seqqueue *q, datatype e)

//新增元素

q->data[q-

>rear]

= e;

q->rear =

(q->rear +1)

%queuesize

;returnok;

}int main()

八、求隊的長度考慮到迴圈佇列的情況,隊尾指標可能位於隊頭指標之前,所以求隊長不能直接返回隊尾指標的位置,應該計算(隊尾指標-隊頭指標+隊的容量)%隊的容量。

int queuelength

(seqqueue *q)

資料結構 佇列

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