資料結構 佇列 迴圈佇列

2021-06-26 20:57:34 字數 1031 閱讀 5587

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。

基本結構如下,這裡front指向第乙個元素的位置,rear指向最後乙個元素的下一位,所以迴圈佇列要浪費乙個空間,這樣才能區別隊滿和隊空得情況。

// member variable

private string queue;

private int front = 0;// point to the first element

private int rear = 0; // point to the next after the last element

private int maxsize;

// constructor with parameter

public queueofstringscircle(int capacity)

入隊

public void enqueue(string str)  else

system.out.println("queue is full");

}

注意理解這裡模運算的技巧,maxsize一定等於整個陣列的長度的,而不是元素的個數。

出隊

public string dequeue()  else 

}

隊滿

public boolean isfull()

隊空

public boolean isempty()

求size

public int size()

如果尾大於頭,說明沒有迴圈產生,直接減就ok

如果尾小於頭,說明迴圈已經產生,這個時候應該取尾減頭的相反數再加上最大長度。

資料結構 佇列 迴圈佇列

資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...

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

資料結構 迴圈佇列 寫在前面 陣列表示的問題 對於佇列最好的方法是使用鍊錶實現,因為對於陣列來說,佇列可能會出現下面這種情況 如圖所示,不可以繼續新增元素,否則會造成陣列越界而遭致程式出錯。然而此時又不應該擴充陣列,因為還有大量實際空間未被占用。此時我們應該如何解決這個問題呢?我們將其實現為迴圈佇列...

資料結構 佇列和迴圈佇列

線性結構 只能從一端新增元素,從另外一端取出元素 先進先出 fifo 時間複雜度o 1 出隊時間複雜度o n public class arrayqueueimplements queue public arrayqueue override public int getsize override ...