1. 程式人生 > 其它 >7.15(2)

7.15(2)

結構體 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

  排序

從小到大

自定義比較函式

從大到小

絕對值從小到大

  去重