資料結構 佇列和迴圈佇列

2021-09-26 20:58:23 字數 1463 閱讀 4707

線性結構

只能從一端新增元素,從另外一端取出元素(先進先出-fifo

時間複雜度o(1)

出隊時間複雜度o(n)

public class arrayqueueimplements queue

public arrayqueue()

@override

public int getsize()

@override

public boolean isempty()

public int getcapacity()

@override

public void enqueue(e e)

@override

public e dequeue()

@override

public e getfront()

@override

public string tostring()

return sb.tostring();

} public static void main(string args)

}}

彌補出隊複雜度o(n),現在的時間複雜度是o(1);

實現迴圈佇列

public class loopqueueimplements queue

public loopqueue()

public int getcapacity()

@override

public int getsize()

@override

public boolean isempty()

@override

public void enqueue(e e)

} private void resize(int newcapacity) }

}

對於array queue來說每執行一次出隊操作,所有的元素都要移一次,時間複雜度是o(n);

對於loopqueue來說出隊入隊時間複雜度都是o(1);

public class main 

private static double testqueue(queueq,int opcount) {

long starttime = system.nanotime();

random r = new random();

for(int i = 0;i使用計算機來模擬生活中佇列,都可使用佇列。

元件計算機的其他演算法,廣度優先遍歷

資料結構 佇列 迴圈佇列

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...

資料結構 佇列 迴圈佇列

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

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

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