三、具體**實現
陣列佇列的實現
佇列作為最常見的資料結構之一,其作用不言而喻。我將自定義乙個佇列的類,該佇列是基礎之前所學習的動態陣列實現的。本文實現了陣列佇列與迴圈佇列兩種資料結構。
由於棧是fifo(first in first out)型別,則棧的增刪只存在入隊enqueue()和出隊dequeue()
遇到的問題與除錯解決
data = newdata;//先傳遞
front = 0;此時強行改變了front指標,不影響隊首元素
tail = getsize();//由於先給的front
//此時getsize中的返回值與front有關所以報錯
則傳遞後的data front和getsize()不正確。正確的語句應為
tail = getsize();
front = 0;
data = newdata;
迴圈佇列的**package queue;
public
class
loopqueue
implements
queue
public
loopqueue()
public
intgetcapacity()
@override
public
void
enqueue
(e e)
data[tail]
= e;
tail =
(tail +1)
% data.length;
}@override
public e dequeue()
@override
public e getfront()
@override
public
boolean
isempty()
@override
public
intgetsize()
public
void
resize
(int newcapacity)
@override
public string tostring()
res.
("]");
return res.
tostring()
;}public
static
void
main
(string[
] args)}}
}執行結果:
queue: size =
1, capacity =
10 front [0]
queue: size =
2, capacity =
10 front [0,
1]queue: size =
3, capacity =
10 front [0,
1,2]
queue: size =
2, capacity =
5 front [1,
2]queue: size =
3, capacity =
5 front [1,
2,3]
queue: size =
4, capacity =
5 front [1,
2,3,
4]queue: size =
5, capacity =
5 front [1,
2,3,
4,5]
queue: size =
4, capacity =
5 front [2,
3,4,
5]queue: size =
5, capacity =
5 front [2,
3,4,
5,6]
queue: size =
6, capacity =
10 front [2,
3,4,
5,6,
7]queue: size =
7, capacity =
10 front [2,
3,4,
5,6,
7,8]
queue: size =
6, capacity =
10 front [3,
4,5,
6,7,
8]queue: size =
7, capacity =
10 front [3,
4,5,
6,7,
8,9]
由於基礎array實現 array**在array的介紹中檢視,這裡不再贅述。
陣列佇列的**
package queue;
import array.array;
public
class
arrayqueue
implements
queue
public
arrayqueue()
@override
public
void
enqueue
(e e)
@override
public e dequeue()
@override
public e getfront()
@override
public
intgetsize()
@override
public
boolean
isempty()
public
intgetcapacity()
@override
public string tostring()
res.
("]");
return res.
tostring()
;}
基本資料結構 佇列
佇列實現的是一種先進先出 first in,first out,fifio 的策略,佇列中的插入的操作稱為入隊 enqueue 佇列的刪除操作稱為出隊 dequeue 定義乙個陣列來實現佇列 public class queue public queue int n public boolean i...
基本資料結構 佇列(queue)
像棧一樣,佇列 queue 也是一種線性表,它的特性是先進先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊 push 要排在隊尾 rear 每次出隊 pop 的都是隊首 front 的人。如圖1,描述了乙個佇列模型。和棧一樣,佇列也有陣列實現和鍊錶實現兩種,兩種實現都能給出快速的o 1 執...
基本資料結構 鏈式佇列
佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 1 允許刪除的一端稱為隊頭 front 2 允許插入的一端稱為隊尾 rear 3 當佇列中沒有元素時稱為空佇列。4 佇列亦稱作先進先出 first in first out 的線性表,簡稱為fifo表。佇列的修改是依先進...