佇列:是「先進先出」的資料結構,從隊尾入隊,從隊頭出隊。
佇列中使用的array,參考「資料結構–手寫動態陣列」。
public
inte***ce
queue
public
class
arrayqueue
implements
queue
public
arrayqueue
(int capacity)
@override
public
intgetsize()
@override
public
boolean
isempty()
public
intgetcapacity()
@override
public
void
enqueue
(t element)
@override
public t dequeue()
@override
public t getfront()
@override
public string tostring()
} result.
("]tail");
return result.
tostring()
;}}
概述
目的:使用陣列佇列,對於出隊操作,是o(n)的時間複雜度,當資料量過大的時候,效能較低。
基礎知識:
出隊時,不再移動元素;而是,使用front和tail來標識,佇列的頭部和尾部所在位置。
front == tail時,代表隊列為空。
(tail + 1) % c == front時,代表佇列滿。 c 代表總capacity。
原始碼
/**
* 規則:
* 1. tail == front, 隊列為空.
* 2. (tail + 1) % c == front, 隊列為滿.
* * @param */
public
class
loopqueue
implements
queue
public
loopqueue
(int capacity)
public
intgetcapacity()
@override
public
intgetsize()
@override
public
boolean
isempty()
@override
public
void
enqueue
(t element)
data[tail]
= element;
tail =
(tail +1)
% data.length;
size++;}
@override
public t dequeue()
t oldelement = data[front]
; data[front]
= null;
front =
(front +1)
% data.length;
size--;if
(size ==
getcapacity()
/4&&getcapacity()
/2!=0
)return oldelement;
}@override
public t getfront()
return data[front];}
@override
public string tostring()
} result.
("]tail");
return result.
tostring()
;}private
void
resize
(int newcapacity)
data = newdata;
front =0;
tail = size;
}}
資料結構 陣列佇列
佇列的實現還是依託於一開始所寫的陣列 資料結構 二次封裝自己的陣列 一 完成陣列基本功能 資料結構 二次封裝自己的陣列 二 公升級為泛型陣列 資料結構 二次封裝自己的陣列 三 公升級為動態陣列 下面是佇列的實現 class arrayqueue queue public arrayqueue pub...
陣列佇列和迴圈陣列佇列
public class arrayqueuedemo catch exception e break case h trycatch exception e break system.out.println 程式退出 使用陣列模擬arrayqueue類 class arrayqueue 判斷佇列是...
資料結構之陣列佇列
佇列的特性 1.佇列是一種線性資料結構,與陣列相比,佇列的方法是陣列的子集 2.向佇列中新增元素只能在隊尾進行,在隊首刪除元素 3.佇列是一種先進先出的資料結構 佇列的方法 1.void enqueue e e 向佇列中新增元素 2.e dequeue 從佇列中刪除元素 3.int getsize ...