本書是作者積多年講授與研究“數據結構”課程的經驗并結合指導學生上機的實踐編寫而成的。作者力求從實踐的角度,幫助讀者深入學習、理解和掌握數據結構知識并能靈活應用這些知識。本書涵蓋了“數據結構”課程涉及的上機實踐內容,并且列舉了理論知識對應的算法實現程序,這些程序都已在VC++6.0環(huán)境下調試通過。
黑新宏,男,博士,教務處處長,1994.9-1998.7 西安理工大學 計算機及其應用 學士;□000.9-□003.4
西安理工大學 計算機應用技術 碩士;□005.4-□008.3 日本大學 理工學部 計算機科學 博士;□008.7-□013.11
西安理工大學計算機科學與工程學院 副教授;□013.1□至今 西安理工大學計算機科學與工程學院
教授!018.1至今,西安理工大學計算機學院教授、院長。
目錄
□□章 線性表1
1.1 線性表的定義1
1.□ 線性表的順序存儲――順序表1
1.3 線性表的鏈式存儲□
第□章 棧和隊列□3
□.1 !3
□.□ 隊列□5
第3章 串39
第4章 數組與廣義表56
4.1 數組56
4.□ 特殊矩陣58
4.3 稀疏矩陣58
4.4 廣義表61
第5章 樹與二叉樹76
5.1 樹76
5.□ 二叉樹76
5.3 二叉樹的性質78
5.4 二叉樹的存儲結構78
5.5 二叉樹的遍歷方法80
5.6 線索二叉樹80
5.7 哈夫曼樹8□
5.8 哈夫曼編碼84
第6章 圖115
6.1 圖的概念115
6.□ 圖的基本術語116
6.3 鄰接矩陣118
6.4 鄰接表1□0
6.5 圖的遍歷1□1
6.6 圖的連通性問題1□1
6.7 生成樹與□小生成樹1□□
6.8 □短路徑1□3
6.9 AOV網與拓撲排序1□4
6.10 AOE網與關鍵路徑1□6
第7章 查找167
7.1 順序查找167
7.□ 有序表的查找168
7.3 二叉排序樹與平衡二叉樹168
7.4 哈希表與哈希方法169
7.5 哈希函數的構造方法169
7.6 處理沖突的方法170
第8章 排序196
8.1 插入排序196
8.□ 交換排序197
8.3 選擇排序198
8.4 歸并排序□00
8.5 基數排序□00
第9章 數據結構算法應用□□8
9.1 順序表的應用□□8
9.1.1 順序表的逆置□□8
9.1.□ 將兩個升序的順序表A和B合并為一個升序的順序表C□□9
9.1.3 單鏈表的逆置□31
9.1.4 將遞增有序的單鏈表A和B合并為遞減有序的單鏈表C□3□
9.1.5 刪除單鏈表中值相同的節(jié)點□34
9.1.6 按遞增次序輸出單鏈表中各節(jié)點的數據值□35
9.1.7 用單鏈表實現約瑟夫(Josephus)問題□37
9.□ 棧和隊列的應用□39
9.□.1 用棧判斷給定的字符序列是否為回文□39
9.□.□ 循環(huán)鏈表中只有隊尾指針的入隊和出隊算法□40
9.□.3 算術表達式中的括號匹配□4□
9.□.4 將隊列中所有元素逆置□45
9.□.5 用兩個棧模擬一個隊列□48
9.□.6 用棧實現漢諾塔(Tower of Hanoi)問題非遞歸解法□50
9.3 串的應用□5□
9.3.1 將串s1中連續(xù)的字符用串s□替換□5□
9.3.□ 計算一個子串在串中出現的次數□53
9.3.3 輸出長度□大的等值子串□55
9.3.4 將鏈串s中首次與鏈串t匹配的子串逆置□56
9.4 數組與廣義表的應用□58
9.4.1 將所有奇數存放到數組的前半部分,所有偶數存放到數組的后半部分□58
9.4.□ 求字符數組中連續(xù)相同字符構成的子序列長度□59
9.4.3 求廣義表的表頭和表尾□60
9.4.4 另一種廣義表生成方法□64
9.5 樹與二叉樹的應用□68
9.5.1 交換二叉樹的左子樹和右子樹□68
9.5.□ 統(tǒng)計二叉樹葉子節(jié)點個數的非遞歸算法的實現□69
9.5.3 判定一棵二叉樹是否為完全二叉樹□71
9.5.4 求二叉樹中□□條□長的路徑并輸出此路徑上各節(jié)點的值□73
9.6 圖的應用□76
9.6.1 鄰接矩陣轉換為鄰接表□76
9.6.□ 深度優(yōu)先搜索的非遞歸算法實現□78
9.6.3 求無向連通圖中距頂點v0路徑長度為k的所有節(jié)點□80
9.6.4 用深度優(yōu)先搜索對圖中所有頂點進行拓撲排序□83
9.7 查找的應用□86
9.7.1 判斷一棵二叉樹是否為二叉排序樹□86
9.7.□ 另一種平衡二叉樹的生成方法□88
9.8 排序的應用□93
9.8.1 用雙向循環(huán)鏈表表示的插入排序□93
9.8.□ 雙向冒泡排序□95
9.8.3 雙向選擇排序□97
9.8.4 單鏈表存儲下的選擇排序□98
9.8.5 歸并排序的迭代算法實現300
參考文獻303