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