本書是普通高等教育“十一五”國家級規(guī)劃教材。全書共10章,內(nèi)容包括:數(shù)據(jù)結(jié)構(gòu)的概念,幾種基本的線性結(jié)構(gòu)(如線性表),棧和隊列,串,幾種非線性結(jié)構(gòu)(如多維數(shù)組和廣義表),樹,圖,常用的數(shù)據(jù)處理技術(如排序),查找,文件的存儲結(jié)構(gòu)和組織方法等。在每章中都收集了難度各異的習題和例題,全書采用C語言作為算法描述語言,并有詳細的注釋,書中全部程序均上機驗證并調(diào)試通過,同時給出部分程序的運行結(jié)果。各章中的“簡單應用舉例”,既是本章算法的綜合應用,也可作為本章實訓內(nèi)容和課程設計的綜合練習,全書有很強的實用性和可操作性。本書可以作為全日制高等學校計算機應用專業(yè)、微電子和信息工程專業(yè)、計算機信息管理和經(jīng)濟信息管理類等專業(yè)普通本科學生的專業(yè)基礎課教材,也可以作為上述專業(yè)高職高專學生的參考教材,還可以作為計算機等級考試的參考書,供廣大從事計算機應用工作的管理人員和技術人員學習參考。
田魯懷,女,碩士學位,副教授職稱。于1982年獲中國石油大學(原華東石油學院)采油工程專業(yè)學士學位和1996年獲上海大學(原上海工業(yè)大學)計算機應用專業(yè)碩士學位;先后在大學、高專學校和高職技術學院任教,分別于1989年和1996年獲講師和副教授職稱。從1984年起,一直從事計算機專業(yè)的教學和科研工作。先后主講了《數(shù)據(jù)結(jié)構(gòu)》、《PASCAL語言程序設計》、《C語言程序設計》、《數(shù)據(jù)庫原理及其應用》、《管理信息系統(tǒng)》等課程。現(xiàn)已退休。
目 錄第1章 概論11.1 概述11.2 數(shù)據(jù)結(jié)構(gòu)的基本概念41.2.1 數(shù)據(jù)結(jié)構(gòu)的基本術語41.2.2 數(shù)據(jù)的邏輯結(jié)構(gòu)61.2.3 數(shù)據(jù)的存儲結(jié)構(gòu)81.3 算法性能分析與度量121.3.1 算法和算法的描述方法121.3.2 算法的特性141.3.3 算法設計的要求141.3.4 算法時間復雜度的分析與度量151.3.5 算法存儲空間的分析與度量19本章小結(jié)19習題120第2章 線性表232.1 線性表的定義及基本運算232.1.1 線性表的定義232.1.2 線性表的基本運算242.2 線性表的順序存儲結(jié)構(gòu)及其運算252.2.1 線性表的順序存儲結(jié)構(gòu)252.2.2 順序表上的基本運算262.2.3 順序表上插入和刪除運算的時間分析302.2.4 順序表的優(yōu)點和缺點312.3 線性表的鏈接存儲結(jié)構(gòu)及其運算312.3.1 單鏈表312.3.2 單鏈表上的基本運算322.3.3 單鏈表上查找、插入和刪除運算的時間分析402.3.4 循環(huán)鏈表402.3.5 雙向鏈表432.4 順序表和鏈表的比較462.5 線性表的簡單應用舉例47本章小結(jié)62習題263第3章 棧和隊列663.1 棧的基本概念663.2 棧的存儲結(jié)構(gòu)673.2.1 棧的順序存儲結(jié)構(gòu)673.2.2 棧的鏈接存儲結(jié)構(gòu)683.2.3 棧的兩種存儲結(jié)構(gòu)的比較693.2.4 多個順序棧共享一個數(shù)組的存儲空間693.3 棧的基本運算703.3.1 順序存儲結(jié)構(gòu)上順序棧的運算實現(xiàn)713.3.2 鏈接存儲結(jié)構(gòu)上鏈棧的運算實現(xiàn)723.4 棧的簡單應用舉例733.4.1 棧在遞歸過程中的作用733.4.2 棧的幾個簡單應用實例763.5 隊列的基本概念813.6 隊列的存儲結(jié)構(gòu)823.6.1 隊列的順序存儲結(jié)構(gòu)823.6.2 順序存儲的循環(huán)隊列843.6.3 隊列的鏈接存儲結(jié)構(gòu)853.7 隊列的基本運算863.7.1 順序存儲結(jié)構(gòu)上順序隊列的運算實現(xiàn)863.7.2 順序存儲結(jié)構(gòu)上循環(huán)隊列的運算實現(xiàn)873.7.3 鏈接存儲結(jié)構(gòu)上鏈隊列的運算實現(xiàn)893.8 隊列的簡單應用舉例91本章小結(jié)97習題398第4章 串1004.1 串的基本概念1004.2 串的存儲結(jié)構(gòu)1014.2.1 串的順序存儲結(jié)構(gòu)1014.2.2 串的鏈接存儲結(jié)構(gòu)1034.3 串的基本運算及實現(xiàn)1054.3.1 串的基本運算1054.3.2 順序串上基本運算的實現(xiàn)1064.3.3 鏈串上基本運算的實現(xiàn)1084.4 串的模式匹配運算1124.4.1 BF模式匹配算法1124.4.2 BM模式匹配算法1154.4.3 KMP模式匹配算法1174.5 串的簡單應用舉例124本章小結(jié)131習題4131第5章 數(shù)組和廣義表1335.1 數(shù)組的概念和存儲1335.1.1 數(shù)組的概念1335.1.2 數(shù)組的存儲結(jié)構(gòu)1345.2 特殊矩陣的壓縮存儲1375.2.1 對稱矩陣的壓縮存儲1375.2.2 三角矩陣的壓縮存儲1385.2.3 對角矩陣的壓縮存儲1395.3 稀疏矩陣的壓縮存儲1415.3.1 稀疏矩陣的三元組表示1415.3.2 稀疏矩陣的十字鏈表表示1485.3.3 稀疏矩陣的簡單應用舉例1525.4 廣義表1575.4.1 廣義表的基本概念1575.4.2 廣義表的鏈接存儲結(jié)構(gòu)1585.4.3 廣義表的基本運算1615.4.4 廣義表的簡單應用舉例166本章小結(jié)167習題5168第6章 樹1706.1 樹的基本概念1706.1.1 樹的定義1706.1.2 樹的基本術語1726.2 二叉樹1746.2.1 二叉樹的概念1746.2.2 二叉樹的基本性質(zhì)1766.2.3 二叉樹的存儲結(jié)構(gòu)1776.3 二叉樹的運算1806.3.1 二叉樹的遍歷1806.3.2 二叉樹的建立1856.3.3 二叉樹的其他運算舉例1876.4 線索二叉樹1926.4.1 線索二叉樹的概念1926.4.2 二叉樹的中序線索化1936.4.3 線索二叉樹的遍歷和插入運算1956.5 樹和森林1986.5.1 樹的存儲結(jié)構(gòu)1986.5.2 樹和森林與二叉樹的轉(zhuǎn)換2016.5.3 樹的遍歷2056.5.4 森林的遍歷2066.6 哈夫曼樹及其應用2076.6.1 哈夫曼樹的基本概念2076.6.2 哈夫曼樹的構(gòu)造及實現(xiàn)2086.6.3 哈夫曼編碼2116.6.4 哈夫曼譯碼2156.6.5 哈夫曼樹在編碼問題中的完整程序216本章小結(jié)218習題6219第7章 圖2227.1 圖的基本概念2227.1.1 圖的實際背景2227.1.2 圖的定義2237.1.3 圖的基本術語2247.2 圖的存儲結(jié)構(gòu)2277.2.1 鄰接矩陣表示法2277.2.2 鄰接表表示法2317.3 圖的遍歷2347.3.1 連通圖的深度優(yōu)先搜索遍歷2357.3.2 連通圖的廣度優(yōu)先搜索遍歷2377.3.3 非連通圖的遍歷2407.3.4 連通圖和非連通圖的建立與遍歷運算實例2417.4 生成樹和最小生成樹2437.4.1 生成樹和最小生成樹的概念2447.4.2 Kruskal算法2457.4.3 Prim算法2487.5 最短路徑2507.5.1 最短路徑的概念2507.5.2 單源最短路徑2527.5.3 所有頂點對之間的最短路徑2557.6 AOV網(wǎng)和拓撲排序2607.6.1 AOV網(wǎng)和拓撲排序的概念2607.6.2 拓撲排序算法2617.7 AOE網(wǎng)和關鍵路徑2657.7.1 AOE網(wǎng)和關鍵路徑的概念2657.7.2 關鍵路徑的確定2677.8 圖的簡單應用舉例269本章小結(jié)277習題7278第8章 排序2818.1 排序的基本概念2818.2 插入排序2848.2.1 直接插入排序2848.2.2 希爾排序2868.3 交換排序2888.3.1 冒泡排序2888.3.2 快速排序2918.4 選擇排序2948.4.1 直接選擇排序2948.4.2 堆排序2958.5 歸并排序3028.5.1 兩個相鄰有序表的一次歸并過程3038.5.2 一趟歸并排序過程3038.5.3 二路歸并排序3048.6 各種內(nèi)排序方法的比較和選擇3058.6.1 各種內(nèi)排序方法的總結(jié)3058.6.2 各種內(nèi)排序方法的比較3058.6.3 排序方法的選擇3068.7 排序的簡單應用舉例307本章小結(jié)311習題8312第9章 查找3159.1 查找的基本概念3159.2 線性表的查找3169.2.1 順序查找3169.2.2 二分查找3179.2.3 分塊查找3209.3 樹表的查找3239.3.1 二叉排序樹3239.3.2 平衡的二叉排序樹3309.3.3 B-樹3359.4 散列表的查找3429.4.1 散列表的概念3429.4.2 散列函數(shù)的構(gòu)造方法3449.4.3 處理沖突的方法3479.4.4 散列表的運算3519.4.5 散列表的查找及分析3559.5 查找的簡單應用舉例357本章小結(jié)362習題9363第10章 文件36510.1 文件的基本概念36510.2 順序文件36710.3 索引文件36810.4 索引順序文件37010.4.1 ISAM文件37010.4.2 VSAM文件37310.5 散列文件37510.6 多關鍵字文件37610.6.1 多重表文件37610.6.2 倒排文件377本章小結(jié)378習題10379參考文獻380