讀書:大話資料結構
第1 章資料結構緒論
資料結構;
是相互之間存在一種或多種特定關係的資料元素的集合。
資料:
是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。資料不僅僅包括整型、實型等數值型別,還包括字元及聲音、影象、視訊等非數值型別。
邏輯結構與物理結構
邏輯結構:是指資料物件中資料元素之間的相互關係。
集合,線性,樹形,圖形
物理結構:是指資料的邏輯結構在計算機中的儲存形式。
順序儲存結構,鏈式儲存結構
第2 章演算法
演算法:
演算法是解決特定問題求解步驟的描述, 在計算機中表現為指令的有限序列, 並且
每條指令表示一個或多個操作。
判斷演算法的效率時,函式中的常數和其他次要項常常可以忽略,而更應該關注主項(最高階項)
的階數。
第3 章線性表
線性表( List ):零個或多個數據元素的有限序列。
1、線性袤的順序儲存結構:
線性表的順序儲存結構,在存、讀資料時,不管是哪個位置,時間
複雜度都是0(1) ; 而插入或刪除時,時間複雜度都是O(n) 。這就說明,它比較適合元
素個數不大變化,而更多是存取資料的應用。
2、線性表的鏈式儲存結構
把連結串列中第一個結點的儲存位置叫做頭指標
迴圈連結串列
雙向連結串列:雙向連結串列(也uble linked List) 是在單鏈袤的每個結點中,再設定一個指向其前驅結點的指標
域。所以在雙向連結串列中的結點都有兩個指標域, 一個指向直接後繼,另一個指向直接
前驅。
第4 章棧與佇列
棧的順序儲存結構
兩棧共享空間
棧的鏈式儲存結構及實現
為何設計棧? 棧的引人簡化了程式設計的問題,劃分了不同關注層次,使得思考範圍縮小,更
加聚焦於我們要解決的問題核心。反之,像陣列等,因為要分散精力去考慮、陣列的下
標增減等細節問題,反而掩蓋了問題的本質。
棧的應用一一遞迴
佇列的定義
佇列的鏈式儲存結構及實現
佇列的鏈式儲存結構,其實就是線性表的單鏈衰,只不過它只能尾進頭出而已,
我們把它簡稱為鏈佇列。
總結:
棧 是限定僅在表尾進行插入和刪除操作的線性表。
佇列( queue) 是隻允許在一端進行插入操作,而在另一端進行刪除操作的線性
表。
第5 章串
1、串的順序儲存結構
2、串的鏈式儲存結構
KMP 模式匹配演算法(字串操作的原理)
模式匹配演算法, 可以大大避免重複遍歷的情況,我們把它稱之為克努特一莫里斯一普拉特演算法, 簡稱KMP 算
法。
第6 章樹
二叉樹的定義
二叉樹性質
性質1 :在二叉樹的第i 層上至多有21- 1 個結點(i > =1 ) 。
性質2: 深度為k 的二叉樹至多有2飛1 個結點(k >= l) 。
……
二叉樹的儲存結構
不存在的結點設定為"^"
遍歷二叉樹
1.前序遍歷
規則是若二叉樹為空,則空操作返回,否則先訪問根結點,然後前序遍歷左子
樹, 再前序遍歷右子樹。如圖6-8-2 所示,遍歷的順序為: ABDGHCE I F 。
2. 中序遍歷
規則是若樹為空,則空操作返回,否則從根結點開始(注意並不是先訪問根結
點) ,中序遍歷根結點的左子樹,然後是訪問根結點,最後中序遍歷右子樹。如圖6-8-3
所示, 遍歷的順序為: GDHBAE I CF 。
3. 後序遍歷
規則是若樹為空,則空操作返回,否則從左到右先葉子後結點的方式遍歷訪問左
右子樹,最後是訪問根結點。如圖6品4 所示i 遍歷的順序為.: GHDBIEFCAo
4 . 層序遍歷
規則是若樹為空, 則空操作返回,否則從樹的第一層,也就是根結點開始訪問,
從上而下逐層遍歷,在同一層中, 按從左到右的頗用才結點逐個訪問。如圖6-8- 5 所
示,遍歷的順序為: ABCDEFGHL.
樹、森林與二叉樹的轉換
樹轉二叉樹
二叉樹轉換為樹
二叉樹轉換為森林
赫夫曼樹及其應用
赫夫曼編碼
編碼
樹、森林看似複雜,其實官們都可以轉化為簡單的二叉樹來處理,我們提供了
樹、森林與二叉樹的互相轉換的辦法,這樣就使得面對樹和森林的資料結構時,編碼
實現成為了可能。
第7 章圖
圖的定義與術語總結
圖按照有無方向分為無向圖和有向圖。無向圖自頂點和邊構成,有向圖由頂點和
弧何成。弧有弧尾和弧頭之分。
圖按照邊或弧的多少分稀疏圖和稠密圖。如果任意兩個頂點之間都存在邊叫完全
圈, 有向的叫有向完全圈。若無重複的邊或頂點到自身的邊則叫簡單圖。
圖中頂點之間有鄰接點、依附的概念。無向圖頂點的邊數叫做度,有向圖頂點分
為入度和出度。
圖上的邊或弧上帶權則稱為網。
圖中頂點間存在路徑,兩頂點存在路徑則說明是連通的,如果路徑最終回到起始
點則稱為環, 當中不重複叫簡單路徑。若任意兩頂點都是連通的,則圖就是連通圖,
有向則稱強連通圖。圖中有子圖, 若子圖極大連通則就是連通分量, 有向的則稱強連
通分量。
無向圖中連通旦n 個頂點n-l 條邊叫生成樹。有向圖中一頂點入度為。其餘頂
點入度為1 的叫有向樹。一個有向固自若干棵有向樹構成生成森林。
記得看過一個創意,我非常喜歡。說的是在美國, 晚上需要保安通過視訊監控對
如商場超市、碼頭倉庫、辦公寫字樓等場所進行安保工作,如圖7鬥-9 所示。值夜班
代價總是比較大的,所以人員成本很高。美國的黑夜就是中國的白天,利
用網際網路,他的員工白天上班就可以監控到美國倉庫夜間的實際情況
充分利用現有的資源,正向思維、逆向思維、整合思維可以創造更大價值。
深度優先遍歷
找鑰匙方案:無論從哪一閻房間開始都可以,比如主
臥室,然後從房間的一個角開始,將房間內的牆角、床頭櫃、床上、床下、衣櫃裡、
衣櫃上、前面的電視櫃等挨個尋找, 做到不放過任何一個死角,所有的抽屜、儲藏櫃
中全部都找遍,形象比喻就是翻個底朝天,然後再尋找下一間,直到找到為止。
廣度優先遍歷
我們把構造連通網的最小代價生成樹
稱為最小生成樹( Minimwn Cost Spanning Tr叫。
找連通網的最小生成樹,經典的有兩種演算法,普里姆演算法和克魯斯卡爾演算法。
拓撲排序介紹
第8 章查詢
順序表查詢:從表中第一個(或最後一個)記錄開始, 逐個進行記親的關鍵字和給定值比
較,若某個記錄的關鍵字和給定值相等,則查詢成功, 找到所查的記錄;如果直到最
後一個(或第一個)記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記
錄,查詢不成功。
有序表查詢
折半查詢:對圖書做了有序排列, 一個線性表有序時,對於查詢總是很有幫助的。
插值查詢:
斐波那契查詢:
稠密索引(字典)
分塊索引
第9 章排序
內排序是在排序整個過程中,待排序的所有記錄全部被就置在記憶體中。外排序是
由於排序的記錄個數太多, 不能同時放置在記憶體,整個排序過程需要在內外存之間多
次交換資料才能進行。
完結!加油!!!