數據結構

數據結構(C語言版):鄧文華著

本書對常用的數據結構作了系統的介紹,力求概念清晰,注重實際應用。全書共分9章,第1章為緒論;第2~8章介紹了線性表、棧和隊列、串和數組、樹與二叉樹、圖、查找和排序七種基本運算;第9章給出了6個綜合應用實例。全書用C語言作為演演算法描述語言,大部分章都附有典型例題與小結,便於讀者總結與提高。本書敘述簡潔、深入淺出、注重實踐和應用,主要面向高職高專計算機類專業的學生,也可以作為大學非計算機專業學生的選修課教材和計算機應用技術人員的自學參考書。

前言


“數據結構”是計算機程序設計的重要理論基礎,是計算機及其應用專業的一門重要基礎課程和核心課程。它不僅是計算機軟體專業課程的先導,而且也逐漸被其他工科類專業所重視。
本書第1版於2004年出版,第2版(國家級“十一五”規劃教材)於2007年出版,自這兩版出版發行以來,受到了廣大師生、讀者的熱烈歡迎,至今已出版發行近4萬冊,在此對廣大師生、讀者表示衷心的感謝。
為了更好地適應新形勢的發展與需要,我們在廣泛收集讀者意見的基礎上對本書進行了修訂再版。本版在保留原版(第2版)特點的基礎上主要作了以下修改。
(1) 修改充實了原來的第9章(綜合應用實例),增加了迷宮問題、簡訊促銷活動、保齡球記分系統、用靜態棧數據結構實現表達式求值等內容。
(2) 對原書中的其他章節進行了小幅調整與修改,幾乎每章均增加了典型例題一節。
(3) 修改、增加了大量習題並配有習題解答。
本書共分9章,第1章為緒論,主要敘述數據、數據結構和演演算法等基本概念。第2~6章分別討論了線性表、棧和隊列、串和數組、樹與二叉樹、圖五種基本數據結構的實現及其應用。第7、8章分別討論了查找和排序操作的各種實現方法及其特點,第9章給出了6個綜合應用實例,以便學生上機實習,進一步加強對學生實際應用及動手能力的培養。
本書有以下特點。
(1)基礎理論知識的闡述由淺入深、通俗易懂。內容組織和編排以應用為主線,略去了一些理論推導和數學證明的過程,淡化演演算法的設計分析和複雜的時空分析。
(2)幾乎各章都配有相應的典型例題或應用,列舉、分析了許多實用的例子,大多數演演算法都直接給出了其相應的C語言程序,以便學生上機練習、實踐。
(3)為了便於學生複習及掌握每章的重點、要點,本書在大部分章的結束處有小結,並列出本章的重點。
(4)本書配有電子教案及習題解答,方便教師的備課與教學。
(5)本書所列程序均在Turbo C 2.0下調試通過。
本書講課時數為60~90學時,上機時數為20~36學時。教師可根據學時數、專業和學生的實際情況選講相應的應用實例。
本書由鄧文華任主編。本書的主要執筆者是:第1、3、5、9章由鄧文華編寫;第2、7、8章由劉文斌編寫;第4、6章由李益明編寫。其他執筆者是:胡智文、鄒華勝、畢保祥、謝勝利、施作芳、鄧澤川、梅志紅、戴大蒙、孔繁勝、李元華、謝翠華、趙麗央。
由於編者水平有限,書中難免存在不妥之處,敬請讀者賜教並指正。

目錄


第1章緒論
1.1從問題到程序
1.2有關概念和術語
1.3演演算法及演演算法分析
1.3.1演演算法特性
1.3.2演演算法描述
1.3.3演演算法分析
1.4關於數據結構的學習
本章小結
習題1
第2章線性表
2.1線性表的邏輯結構
2.1.1線性表的定義
2.1.2線性表的基本操作
2.2線性表順序存儲及其操作的實現
2.2.1順序表
2.2.2順序表基本操作的實現
2.2.3順序表的其他操作舉例
2.3線性表的鏈式存儲及其操作的實現
2.3.1單鏈表
2.3.2單鏈表基本操作的實現
2.3.3循環鏈表
2.3.4雙向鏈表
2.3.5單鏈表的其他操作舉例
2.4典型例題
本章小結
習題2
第3章棧和隊列
3.1棧
3.1.1棧的定義及其基本運算
3.1.2棧的存儲結構和基本運算的實現
3.1.3棧的應用舉例
3.1.4棧與遞歸的實現
3.2隊列
3.2.1隊列的定義及其基本運算
3.2.2隊列的存儲結構和基本運算的實現
3.2.3隊列的應用舉例
3.3典型例題
本章小結
習題3
第4章串和數組
4.1串
4.1.1串的基本概念
4.1.2串的基本運算
4.1.3串的存儲結構及其基本運算的實現
4.1.4串的其他運算舉例
4.2數組
4.2.1數組的邏輯結構和基本操作
4.2.2數組的存儲結構
4.2.3稀疏矩陣
4.2.4矩陣的其他運算舉例
4.3典型例題
本章小結
習題4
第5章樹與二叉樹
5.1樹的概念與基本操作
5.1.1樹的定義及相關術語
5.1.2樹的基本操作
5.2二叉樹
5.2.1二叉樹的基本概念
5.2.2二叉樹的主要性質
5.2.3二叉樹的存儲結構與基本操作
5.2.4二叉樹的遍歷
5.2.5二叉樹的其他操作舉例
5.3樹與森林
5.3.1樹的存儲
5.3.2樹、森林與二叉樹的相互轉換
5.3.3樹和森林的遍歷
5.4最優二叉樹——哈夫曼樹
5.4.1哈夫曼樹的基本概念
5.4.2哈夫曼樹的構造演演算法
5.4.3哈夫曼編碼
5.4.4哈夫曼編碼的演演算法實現
5.5典型例題
本章小結
習題5
第6章圖
6.1圖的基本概念
6.1.1圖的定義和術語
6.1.2圖的基本操作
6.2圖的存儲結構
6.2.1鄰接矩陣
6.2.2鄰接表
6.3圖的遍歷
6.3.1深度優先搜索
6.3.2廣度優先搜索
6.4圖的應用
6.4.1最小生成樹
6.4.2最短路徑
6.4.3拓撲排序
6.5典型例題
本章小結
習題6
第7章查找
7.1基本概念與術語
7.2靜態查找表
7.2.1靜態查找表結構
7.2.2順序查找
7.2.3有序表的折半查找
7.2.4分塊查找
7.3動態查找表
7.4哈希表
7.4.1哈希表與哈希方法
7.4.2常用的哈希函數構造方法
7.4.3處理衝突的方法
7.4.4哈希表的查找演演算法
7.4.5哈希表的性能分析
7.5典型例題
本章小結
習題7
第8章排序
8.1基本概念
8.2三種簡單排序方法
8.2.1直接插入排序
8.2.2冒泡排序
8.2.3簡單選擇排序
8.3希爾(Shell)排序
8.4快速排序
8.5堆排序
8.6歸併排序
8.7各種排序方法的比較與討論
8.8典型例題
本章小結
習題8
第9章綜合應用實例
9.1上機實驗要求及規範
9.1.1上機實習的具體步驟
9.1.2實驗報告的基本要求
9.2約瑟夫環問題
9.3迷宮問題
9.4簡訊促銷活動
9.5保齡球記分系統
9.6用靜態棧數據結構實現表達式求值
9.7哈夫曼編解碼器
參考文獻