7.15(2)
阿新 • • 發佈:2021-07-15
結構體 struct
建構函式
//
資料結構
1.陣列
詢問(O(1)),修改(O(1)),插入(O(n)),刪除(O(n))。
2.連結串列(雙向連結串列)
可解決陣列插入和刪除過慢的問題
思路:
連結串列(元素)的刪除(O(1))
連結串列(元素)的插入(O(1))
連結串列的查詢與修改(O(n))
實現:
3.佇列(queue)
實現
手寫佇列
STL佇列
push()向佇列加入,pop()刪除隊首
3.棧(stack)
實現
手寫佇列
STL佇列
top()訪問最上層元素
4.雙段佇列(deque)
STL
5.堆(heap)
堆分為兩種:最大堆和最小堆,兩者的差別在於節點的排序方式。
在最大堆中,父節點的值比每一個子節點的值都要大。在最小堆中,父節點的值比每一個子節點的值都要小。這就是所謂的“堆屬性”,並且這個屬性對堆中的每一個節點都成立。
加入一個數,刪除最大(最小)的數,訪問最大(最小)的數
//
二叉樹(一個節點只有兩個子節點,先有左子節點,再有右子節點)
//
堆(特殊的二叉樹——每個節點值比其二子節點大(小))
實現
插入(O(log2 p))
刪除
STL堆(優先佇列)
把push的值加負號,可轉化為小根堆。
//
過載運算子
const保證x,y的值不會改變,&保證x,y不會被複制從而節省時間
//
6,map——功能強大的陣列
只要下標在定義範圍內,均合法
STL演算法
#include<algorithm>
1.兩個數
min(),max()內的變數型別必須一樣
2.n個數
翻轉
e.g. 1 2 3 4 5 5 4 3 2 1
排序
從小到大
自定義比較函式
從大到小
絕對值從小到大
去重