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

2021-09-27 11:34:44 字數 2177 閱讀 2705

佇列:是「先進先出」的資料結構,從隊尾入隊,從隊頭出隊。

佇列中使用的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 ...