1.使用容器vector:標頭檔案:vector、iostream、algoritm
(1)定義vectorv1(無初值);vectorv2(3,0)(三個元素初值為0)
(2)實用迭代器的方式將容器中的值輸出來
for(vector::iterator begin i = v2.begin();i!=v2.end();i++)
cout << *i << endl;
(3)插入
eg:v2.insert(v2.begin(),3)(在開頭插入3);v2.pushback(0)(在尾部插入0);v2.insert(v2.end(),v2.begin(),v2.end())(連線兩個v2)
(4)刪除元素
eg:v2.erase(v2.begin())(刪除開頭的指定元素);v2.erase(v2.begin(),v2.end()) (刪除整體的元素)
(5)訪問元素
eg: cout << v2[0] (訪問第乙個元素);或者cout
eg:v2.assign(3,4)(分配3個4元素);v3.assign(v2.begin(),v2.end())(分配v2的元素到v3中)
(7)二維陣列
vector> v2;vectorv2_0<3,4>;vectorv2_1<3,6>;v2.push_back(v2_0);v2.push_back(v2_1);//這個時候遍歷就可以不用迭代器了,直接 for(int i = 0;i2.queue:標頭檔案:queue、iostream
(1)定義:queueql;
(2)ql.pop():彈出佇列的第乙個元素;ql.push(x),將x 放入ql的末端;ql.front():ql的第乙個元素;ql.back():ql的最後乙個元素。
3.array(陣列):標頭檔案:array、iostream
(1)定義:arraymyarray;
(2)獲取陣列中元素的方式
如果是直接獲取第n個,可以用myarray[3];如果是獲取所有的,則可以利用遍歷的方式
for(auto it = myarray.begin();it != myarray.end(); it++)
4.樹學習
(1)定義:樹是乙個由n(n>=1)的有限個節點組成的有層次關係的集合。
(2)性質:a.結點、父結點、子結點、根結點。每個結點有0個或者多個子節點,其中非根節點有乙個父結點。
b.雙親、孩子、兄弟。如果乙個結點有子結點,則該結點為子結點的雙親,子結點為雙親結點的孩子;其中有相同雙親結點的子結點互為兄弟;
c.結點的度:結點的子樹的個數;葉子結點:度為0的結點;樹的度:樹中結點最大的度;層次:跟結點的層次為1,其他結點的層次為雙親結點的層次加1;樹的高度:樹中結點最大的層次;
(3)二叉樹是每個結點最多有兩個子樹的樹結構;二叉樹可以是空集;根可以有空的左、右子樹;也可以左右子樹都為空。
a.二叉樹種類:滿二叉樹、完全二叉樹、二叉查詢樹。其中滿二叉樹是除了最下面一層結點外,每個結點都有兩個左右子樹;完全二叉樹則是只有最下面兩層的度可以小於2,且最下層的結點集中在靠左的若干位置;二叉查詢樹則是對於某結點的值,它的左子樹的值比該值小,右子樹的值比該值大。
b.二叉樹性質:第i層結點數目最多有
(4)路漫漫其修遠兮,樹的種類還多著呢,只有積矽步成千里了
下面學習下平衡樹。對於二叉搜尋樹,其期望高度為
參考文獻:
未完待續。。。。。
資料結構學習筆記
資料結構概述 定義我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢摸個 元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這個相應 的操作也叫演算法 資料結構 個體 個體的關係 演算法 對儲存資料的操作 演算...
資料結構學習筆記
資料結構學習筆記 程式 資料結構 演算法 資料結構 資料 結構 結構的本質是關係 資料之間的關係從不通風層面上分為邏輯關係和物理關係 演算法的設計要依據資料的邏輯關係 演算法的實現要依據資料的物理關係 物理關係是邏輯關係的基礎和載體 演算法實現時需要先依據問題抽象出資料模型,即初步確定待處理資料的邏...
資料結構 學習筆記
一 鍊錶 1 基本特徵 記憶體節點是不連續的,節點之間通過指標彼此關聯。2 基本操作 追加 插入 刪除 遍歷 偽隨機訪問!3 實現要點 1 追加 新建節點存放資料,令新節點的前指標指向當前尾節點,新節點的後指標為null,令當前尾節點的後指標指向新節點,尾指標指向新節點。考慮在空煉表中追加第乙個節點...