資料結構和演算法 一般佇列和環形佇列

2021-10-04 15:50:52 字數 2066 閱讀 6954

佇列容量為maxsize 。

佇列的頭部由front記錄,front指向頭部元素的前乙個位置;rear記錄佇列尾部,rear指向尾部元素。front和rear是陣列的下標。(注意,這裡非常重要也比較容易混淆,front不是指向頭部元素,而rear是指向尾部元素)。

當元素入列時,rear數值加1;元素出列時,front數值加1。

這裡顯然,該佇列有乙個缺陷:當有maxsize數量的元素出列時或rear為maxsize - 1時,無法再有元素可以入列。那麼這就是乙個一次性佇列,實際應用不是很大。

前面我們了解到"一次性"陣列的侷限性。現在我們來改造一下陣列,通過取模運算把陣列想象成乙個環狀的資料順序儲存結構。

front指向陣列的第乙個元素,front初始值為0;rear指向最後元素的後乙個位置,初始值為0(因為環狀的特點,最後元素的後乙個位置為0)。

陣列可以儲存maxsize個元素。

當(rear + 1)% maxsize == front時佇列滿。

當rear == front佇列空。

public

class

circlequeue

/** * judge if the array is empty.

* @return, a boolean value

*/public

boolean

isempty()

/** * judge if the array is full.

* @return, a boolean value

*/public

boolean

isfull()

/** * make a new element queue in.

* @param element, new element which queue in to the array.

*/public

void

queuein

(int element)

//rear向後移動乙個位置,這裡的取模運算是防止溢位,也是達到迴圈效果。

this

.rear =

(this

.rear +1)

%this

.maxsize;

}/**

* make the front element queue out.

* @return, the front element

*/public

intqueueout()

throws exception

int temp =

this

.array[

this

.front]

;this

.front =

(this

.front +1)

%this

.maxsize;

return temp;

}/**

* get a number indicating the elements in array.

* @return, int value

*/public

intgetelementnumber()

/** * print out all elements in array according to the order.

*/public

void

printarray()

}/**

* peek the front element.

* @return, the front element.

* @throws exception, throw exception if the array is empty.

*/public

intpeek()

throws exception

return

this

.array[

this

.front];}

}

資料結構之佇列和環形佇列

佇列實現 1.佇列是一種有序列表,遵循先進先出的原則。1.陣列模擬佇列,分別有隊頭和隊尾指標,從 1開始,進隊時隊尾指標自增,出隊時隊頭指標自增,隊頭是指向第乙個資料的前乙個位置。示意圖如下 package array public class queuearray 使用陣列模擬佇列 編寫乙個arr...

基礎資料結構和演算法 5 佇列

1.佇列是什麼?佇列是一種只能從表的一端存資料另一端取資料且遵循fifo 先進先出 原則的線性儲存結構。通常只會對佇列執行以下兩種操作 資料元素進佇列的過程稱為 入隊 出佇列的過程稱為 出隊 佇列與棧的比較 2.佇列怎麼用?佇列一般用來處理與等待相關的處理。3.佇列怎麼實現?考慮到每次出隊和入隊都要...

資料結構和演算法 佇列

佇列 通俗點的定義就是,排隊買票,先到的先買。就是先進先出。佇列和棧一樣都是操作受限的線性表資料結構 在隊尾入隊,隊頭出隊。同樣想象買票的流程。除非你經常插隊要不很容易理解!順序佇列 用陣列實現的佇列 鏈式佇列 用鍊錶實現的佇列 1 順序佇列的python 實現 首先說一下順序佇列的實現過程。與棧只...