1. 程式人生 > 其它 >java演算法與資料結構------佇列的操作

java演算法與資料結構------佇列的操作

佇列通常提供的操作:

  1. 入隊: 通常命名為push()
  2. 出隊: 通常命名為pop()
  3. 求佇列中元素個數
  4. 判斷佇列是否為空
  5. 獲取隊首元素

1.4 佇列的儲存結構

佇列與棧一樣是一種線性結構,因此以常見的線性表如陣列、連結串列作為底層的資料結構。
本文中,我們以陣列、連結串列為底層資料結構構建佇列。

2.基於陣列的迴圈佇列實現

以陣列作為底層資料結構時,一般講佇列實現為迴圈佇列。這是因為佇列在順序儲存上的不足:每次從陣列頭部刪除元素(出隊)後,需要將頭部以後的所有元素往前移動一個位置,這是一個時間複雜度為O(n)的操作:

可能有人說,把隊首標誌往後移動不就不用移動元素了嗎?的確,但那樣會造成陣列空間的“流失”。
我們希望佇列的插入與刪除操作都是O(1)的時間複雜度,同時不會造成陣列空間的浪費,我們應該使用迴圈佇列。
所謂的迴圈佇列,可以把陣列看出一個首尾相連的圓環,刪除元素時將隊首標誌往後移動,新增元素時若陣列尾部已經沒有空間,則考慮陣列頭部的空間是否空閒,如果是,則在陣列頭部進行插入。