資料結構 佇列實現(順序迴圈佇列 鏈式佇列)

2021-10-02 06:13:52 字數 2634 閱讀 1459

* * 佇列的介面

*/public

inte***ce

qqueue

存在假溢位問題!不建議使用

使用模擬迴圈的方式避免假溢位:

實現:

package pers.zhang.queue;

/** * @author zhang

* @date 2020/1/17 - 11:45

* * 順序迴圈佇列

*/public

class

seqqueue

implements

qqueue

//預設構造

public

seqqueue()

//判斷佇列是否為空

@override

public

boolean

isempty()

//元素x入隊,空物件不能入隊

@override

public

void

enqueue

(t x)

this

.element[

this

.rear]

= x;

//插入資料

this

.rear =

(this

.rear +1)

%this

.element.length;

//移動隊尾

}//出隊,返回隊頭元素

* * 鏈式佇列

*/public

class

linkedqueue

implements

qqueue

//判斷佇列是否為空

@override

public

boolean

isempty()

//元素x入隊,空物件不操作

@override

public

void

enqueue

(t x)

//出隊,返回隊頭元素

@override

public t dequeue()

//返回佇列所有元素的描述字串,形式為「(,)」

@override

public string tostring()

return str +

")";

//空表返回()

}}

package pers.zhang.queue;

/** * @author zhang

* @date 2020/1/17 - 12:55

*/public

class

queue_ex

system.out.

println

("\n"

+q.tostring()

);system.out.

print

("dequeue : ");

while

(!q.

isempty()

) system.out.

print

(q.dequeue()

.tostring()

+" ");

system.out.

println()

;}}/*

dequeue : 10 20

()(30, 40, 50, 60)

(30, 40, 50, 60, 70)

enqueue: 1 2 3 4 5

(1, 2, 3, 4, 5)

dequeue : 1 2 3 4 5

*/

資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)

前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...

資料結構 鏈佇列和順序佇列的實現

利用順序表的特性,定義乙個佇列游標的結構,頭front指向佇列的頭 注意!這裡為了好操作不直接讓頭等於佇列頭,因為以後可以利用頭追上尾表示隊空,這個標準使得迴圈佇列更易理解 尾rear等於隊尾。然後就是幾個基本的初始化 增加 減少 刪除等操作。順序的迴圈佇列由於無法釋放不需要的記憶體,相對迴圈佇列,...

資料結構 迴圈佇列(順序佇列)模板類實現

資料結構筆記3.3 順序佇列是用順序表實現的 即依託於陣列 這裡實現的是迴圈佇列,其實也可以不用迴圈,但是那樣的話,空間的利用效率就太低了,這就是 假溢位 問題,因為在陣列的前端可能還有空閒的位置 因為佇列中的資料是在動態變化的,可能出隊也可能入對 為了能夠充分利空間,所以用迴圈佇列,即在邏輯上把陣...