1 #include
2 #include
3 #include
4 #include
5#define n 100005
6using
namespace std;
7struct sbt
14 }t[n];
15int root,tot; //
根的位置以及節點個數
16//
左旋轉處理
17void left_rot(int &x)
25//
右旋轉處理
26void right_rot(int &x)
34//
調整處理
35void maintain(int &r,bool flag)
43else
44return;
45 }
46else
53else
54return;
55 }
56//
更新子樹,然後再更新根,直到平衡為止
57 maintain(t[r].left,false);
58 maintain(t[r].right,true);
59 maintain(r,false);
60 maintain(r,true);
61 }
62//
插入新節點
63void insert(int &r,int k)
69else
78 }
79//
刪除結點,利用的是前驅替換
80int remove(int &r,int k)
93else remove(k94 }
95void delete(int &r,int delay,int min_val)
101else
105 }
106//
取得最大值,即一直遍歷到最右的結點
107int get_max(int &r)
112//
取得最小值,即一直遍歷到最左的結點
113int get_min(int &r)
118//
獲得前驅
119int get_pre(int &r,int y,int k)
126//
獲得後繼
127int get_next(int &r,int y,int k)
134//
取得第k小的數,注:暫不能解決有重複數的
135int get_min_kth(int &r,int k)
141//
取得第k大的數
142int get_max_kth(int &r,int k)
148//
獲得結點的名次
149int get_rank(int &r,int k)
157//
排序158
void inorder(int &r)
不完全型別
c 允許在乙個 檔案中存放多個類,但這樣往往不便於類的管理,所以一向是提倡乙個檔案中只存放乙個類。不過呢,隨著類規模的不斷膨脹,乙個檔案中存放乙個類也有些顯得臃腫,或者是在某個角度上不便於 的組織。因此,c 2.0中引入了不完全型別的概念,即啟用了新的修飾符partial。借助該修飾符,我們可以在多...
不完全型別
不完全型別指 函式之外 型別的大小不能被確定的型別 總結一下,c的型別分為 結構體的宣告就是乙個不完全型別的典型例子。struct woman tag struct man tag struct woman tag 這樣是沒問題的。如果將man tag結構中的struct woman tag wif...
不完全型別
有時候我們在一些編譯器寫 的時候會碰見不完全型別這個編譯錯誤,那麼什麼是不完全型別,為啥會出現呢 不完全型別指 函式之外 型別的大小不能被確定的型別 只能以有限方式使用。不能定義該型別的物件。不完全型別只能用於定義指向該型別的指標及引用 1 或者用於宣告使用該型別作為形參型別或者返回值型別。c的型別...