二 佇列(直線佇列和環形佇列)

2021-10-09 07:36:43 字數 2574 閱讀 3180

佇列是乙個有序列表,可以用陣列或者鍊錶來實現,遵循先入先出的原則。

front指向佇列頭的資料前乙個位置,rear指向隊尾元素。利用者兩個變數front及rear分別記錄佇列前後端的下標,front會隨著資料輸出而改變,而rear則是隨著資料輸入而改變。

下面利用陣列建立乙個含有三個元素的佇列,**及注釋如下:

public

class

arrayqueuedemo

catch

(exception e)

break

;case

'h':

trycatch

(exception e)

break

;case

'e':

scanner.

close()

; loop =

false

;break

;default

:break;}

} system.out.

println

("程式退出~");

}}class

arrayqueue

public

boolean

isfull()

//由兩個指標位置來判斷佇列是否為滿

public

boolean

isempty()

//由兩個指標位置來判斷佇列是否為空

public

void

addqueue

(int n)

rear++

; arr[rear]

= n;

}public

intgetqueue()

front++

;return arr[front];}

public

void

showqueue()

for(

int i =

0; i public

intheadqueue()

return arr[front+1]

;}}

上述**表示的是乙個簡單的佇列,但是可以發現這種佇列已經被取出元素的地方不能夠繼續使用,也就是當取出佇列中所有元素後,不能再新增元素。因此引出環形佇列。

front初始值為0,rear初始值為0。front指向佇列的第乙個元素,rear指向隊尾元素的後乙個位置。空出乙個位置作為約定。當佇列滿時條件是:(rear+1) % maxsize = front。當佇列空時條件是:rear = front。佇列中有效資料個數為:(rear + maxsize - front) % maxsize。

public

class

circlearrayqueuedemo

catch

(exception e)

break

;case

'h':

trycatch

(exception e)

break

;case

'e':

scanner.

close()

; loop =

false

;break

;default

:break;}

} system.out.

println

("程式退出~");

}}//建立環形佇列

class

circlearray

public

boolean

isfull()

public

boolean

isempty()

public

void

addqueue

(int n)

arr[rear]

= n;

rear =

(rear+1)

% maxsize;

//這裡必須取模,因為陣列長度有限,而rear值可以不斷增加的

}public

intgetqueue()

int value = arr[front]

; front =

(front +1)

% maxsize;

//同樣的道理,因為陣列長度有限,而front值可以不斷增加的

return value;

}public

void

showqueue()

//從front開始遍歷

for(

int i = front; i < front +

size()

; i++)}

public

intsize()

public

intheadqueue()

return arr[front];}

}

佇列(二)佇列的鍊錶儲存

include define false 0 define ok 1 定義佇列每個節點的結構 typedef struct node node,qnode 相當於typedef struct node qnode 定義整個佇列結構 typedef struct squeue squeue 建立乙個空...

二 佇列再探之迴圈佇列

佇列再探 類似排隊 先進先出 迴圈佇列 日期 11.3 變化 順序佇列 變成 迴圈佇列 關鍵 用取餘操作實現在陣列的範圍內 和 迴圈佇列隊滿條件 注意這裡會多乙個空餘資料空間 建議 畫圖理解最佳 include 包含malloc函式的標頭檔案 include struct queue typedef...

佇列判空 (二)佇列的實現

源於生活,抽象生活。生活中的佇列 當然是停車場排隊出場啦。計算機的佇列 簡答的說就是先入先出 fifo 在大腦中要有的概念是 隊頭 狀態 就是排隊第乙個交錢準備出場的車 隊尾 狀態 最後乙個排隊準備交錢的車 入隊 動作 add.把車開入 出停車場的道 出棧 動作 out.交完錢,把車開出停車場。fi...