一步步學資料結構與演算法 09 佇列

2021-08-29 00:00:23 字數 1293 閱讀 3240

1.先進者先出,這就是典型的「佇列」結構。

2.支援兩個操作:入隊enqueue(),放乙個資料到隊尾;出隊dequeue(),從隊頭取乙個元素。

3.所以,和棧一樣,佇列也是一種操作受限的線性表。

1.佇列api

public inte***ce queue
2.陣列實現(順序佇列):

public class arrayqueue 

/** 入隊:

* 1.堆滿的時,入隊失敗

* 1.1頻繁出入隊,造成陣列使用不連續

* 1.2在入隊的時候,集中觸發進行資料搬移

* 2.在末尾插入資料,注意tail指向隊尾元素的索引+1

*/public boolean enqueue(string item)

head = 0;

tail = tail - head;

}//將資料加入佇列

items[tail++] = item;

size++;

return true;

}//出隊:1.隊空時,出隊失敗;2.出隊,head索引+1

public string dequeue()

}

3.鍊錶實現(鏈式佇列):

public class linkedqueue 

//記錄佇列元素個數

private int size = 0;

//head指向隊頭結點,tail指向隊尾節點

private node head;

private node tail;

//申請乙個佇列

public linkedqueue(){}

//入隊

public boolean enqueue(string item)

//出隊

public string dequeue()

}

4.迴圈佇列(基於陣列):

public class looparrayqueue 

//入隊:關鍵在於隊滿的條件

public boolean enqueue(string item)

//出隊:關鍵在於隊空的條件

public string dequeue()

}

1.除了執行緒池這種池結構會用到佇列排隊請求,還有哪些類似執行緒池結構或者場景中會用到佇列的排隊請求呢?

2.今天講到併發佇列,關於如何實現無鎖的併發佇列,網上有很多討論。對這個問題,你怎麼看?

一步步學資料結構與演算法 10 遞迴

1.遞迴是一種非常高效 簡潔的編碼技巧,一種應用非常廣泛的演算法,比如dfs深度優先搜尋 前中後序二叉樹遍歷等都是使用遞迴。2.方法或函式呼叫自身的方式稱為遞迴呼叫,呼叫稱為遞,返回稱為歸。3.基本上,所有的遞迴問題都可以用遞推公式來表示,比如 f n f n 1 1 f n f n 1 f n 2...

一步步學資料結構與演算法 20 雜湊演算法 上

帶著問題來學習 1.如何防止資料庫中的使用者資訊被脫庫?2.你會如何儲存使用者密碼這麼重要的資料嗎?僅僅 md5 加密一下儲存就夠了嗎?3.在實際開發中,我們應該如何用雜湊演算法解決問題?1.定義 將任意長度的二進位制值串對映成固定長度的二進位制值串,這個對映的規則就是雜湊演算法,而通過原始資料對映...

一步步學資料結構與演算法 18 雜湊表 中

思路 何為乙個工業級的雜湊表?工業級的雜湊表應該具有哪些特性?結合學過的知識,我覺的應該有這樣的要求 1.支援快速的查詢 插入 刪除操作 2.記憶體占用合理,不能浪費過多空間 3.效能穩定,在極端情況下,雜湊表的效能也不會退化到無法接受的情況。方案 如何設計這樣乙個雜湊表呢?根據前面講到的知識,我會...