資料結構 佇列底層實現

2021-10-04 13:13:13 字數 2037 閱讀 2635

1、佇列是一種線性結構

2、相比陣列,佇列對應的操作可以看作是陣列的子集

3、只能從一端新增(隊尾)資料,從另一端取出資料(隊首)

4、fifo先進先出fist in first out

public

inte***ce

queue

public

class

arrayqueue

implements

queue

public

arrayqueue()

@override

public

intgetsize()

@override

public

boolean

isempty()

public

intgetcapacity()

@override

public

void

enqueue

(e e)

@override

public e dequeue()

@override

public e getfront()

}

public

class

linkedlistqueue

implements

queue

public

node

(e e)

public

node()

@override

public string tostring()

}private node head, tail;

private

int size;

public

linkedlistqueue()

@override

public

intgetsize()

@override

public

boolean

isempty()

@override

public

void

enqueue

(e e)

else

size ++;}

@override

public e dequeue()

@override

public e getfront()

}

使用front來記錄隊首的位置,使用tail來記錄下乙個入隊元素所存放的位置,也就是對尾元素的下乙個位置。所以初始的迴圈佇列應該是這樣的。 如果有元素出隊,那麼將front加1即可,這樣就不用所有元素移動了。

判斷隊為空的條件是:front == tail

判斷隊滿條件是:(tail +1) % capacity = front因為是迴圈的,所以記得取餘數。

所以,迴圈佇列中需要浪費乙個空間。

public class loopqueue implements queue

public loopqueue()

public int getcapacity()

@override

public boolean isempty()

@override

public int getsize()

@override

public void enqueue(e e)

@override

public e dequeue()

@override

public e getfront()

private void resize(int newcapacity)

@override

public string tostring()

return res.tostring();

}public static void main(string args)}}

STL底層資料結構實現

c stl 的實現 1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double...

C 底層資料結構實現

c stl 的實現 1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double...

資料結構 Java實現佇列

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 head 進行刪除操作,而在表的後端 tail 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入...