一、隊的定義
只允許在一段進行插入,另一端進行刪除的線性表,又稱為先進先出線性表,簡稱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...