2 迴圈陣列佇列

2021-10-24 01:59:33 字數 2025 閱讀 5709

是一種資料結構,遵守著「先進先出」的原則,是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表,有點類似我們生活排隊的操作,而這次我們在這裡討論的是以陣列為原型組成的「佇列」

class

arrayqueue

首先我們先定義乙個陣列佇列,並在下面定義幾個對陣列的操作

在入佇列的操作中,需要有以下思考

(1)存入資料後,尾指標後移,並當front == rear時,即表示佇列中的資料為空(或者說已經消費完了)

(2)當尾指標rear小於佇列的最大下標「maxsize-1」,則將資料存放於佇列中,否則則無法存放資料

那麼接下來我們根據陣列佇列,寫乙個構造器

public

arrayqueue

(int maxsize)

並將頭指標和尾指標都定義為-1,意為空佇列。

並根據上面的思考,分別寫出兩個判斷隊列為空或隊列為滿的方法

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 < arr.length; i++)}

public

intheadqueue()

return arr[front+1]

;}}

但是我們也意識到當佇列取出資料後,原來的頭指標增加了一位,可後面的指標卻不能移動到前面,造成了「假滿」,所以迴圈佇列就是為了解決這種操作而誕生的

迴圈陣列佇列對比普通陣列佇列,它能利用頭節點移動後造成的空間浪費,實現對空間的利用

class

circlearrayqueue

它內部私有屬性和普通佇列一樣,只不過它的頭指標在初始化的時候不再是-1,而是0

public

circlearrayqueue

(int maxsize)

在迴圈陣列佇列中,我們要運用一種新的計算方式,通過對尾指標進行取餘的操作,能夠進行尾指標返回到頭部進行計算

所以對於判斷佇列是否為滿,我們更改了一下判斷方式

public

boolean

isfull()

並在原來的基礎上修改了增刪除佇列的操作

public

void

addqueue

(int n)

arr[rear]

= n;

rear =

(rear+1)

% maxsize;

}public

intgetqueue()

int value = arr[front]

; front =

(front+1)

% maxsize;

return value;

}public

void

showqueue()

for(

int i = front; i < front+

size()

; i++)}

public

intsize()

通過這樣小小的改動,就可以讓佇列有了新的用途

陣列佇列和迴圈陣列佇列

public class arrayqueuedemo catch exception e break case h trycatch exception e break system.out.println 程式退出 使用陣列模擬arrayqueue類 class arrayqueue 判斷佇列是...

陣列佇列和迴圈佇列

定義乙個queue的介面 public inte ce queue引入之前自定義的動態陣列array類 出隊時間複雜度是o n 其餘為o 1 public class arrayqueue implements queue public arrayqueue override public int ...

資料結構 陣列佇列 迴圈佇列

佇列 是 先進先出 的資料結構,從隊尾入隊,從隊頭出隊。佇列中使用的array,參考 資料結構 手寫動態陣列 public inte ce queue public class arrayqueue implements queue public arrayqueue int capacity ov...