本書對(duì)數(shù)據(jù)結(jié)構(gòu)的概念和原理進(jìn)行了闡述,對(duì)數(shù)據(jù)結(jié)構(gòu)的基本運(yùn)算進(jìn)行了分析,并給出了詳細(xì)的實(shí)現(xiàn)過程。全書共分11章,內(nèi)容包括:緒論、線性表、棧、隊(duì)列、串、多維數(shù)組和廣義表、樹和二叉樹、圖、查找、排序、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)等,并在附錄部分介紹了數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)系統(tǒng)的組裝。
本書集教學(xué)內(nèi)容、習(xí)題、實(shí)驗(yàn)和課程設(shè)計(jì)于一體,書中的重要算法均給出了完整的C/C++語言源程序,并全部在VC++環(huán)境中運(yùn)行通過,一書在手就能方便地進(jìn)行“數(shù)據(jù)結(jié)構(gòu)”課程的理論學(xué)習(xí)和實(shí)驗(yàn)、課程設(shè)計(jì)等實(shí)踐性環(huán)節(jié)的訓(xùn)練。
本書適合作為高等院校計(jì)算機(jī)類專業(yè)數(shù)據(jù)結(jié)構(gòu)課程的教材,也可以作為成人教育、自學(xué)考試和從事計(jì)算機(jī)應(yīng)用的工程技術(shù)人員的參考用書。
陳元春:男,1949年生, 上海市人,曾任職于上海電機(jī)學(xué)院電子信息學(xué)院副教授,教學(xué)督導(dǎo),現(xiàn)已退休,從事高等教學(xué)工作近30年,先后擔(dān)任近二十門高等教學(xué)課程的授課工作,編寫過多種教材和教學(xué)參考書,五次被評(píng)為上海市機(jī)電一局(現(xiàn)電器集團(tuán)公司)優(yōu)秀教育工作者和先進(jìn)工作者。
1.1什么是數(shù)據(jù)結(jié)構(gòu)
1.1.1從數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)演示系統(tǒng)認(rèn)識(shí)數(shù)據(jù)結(jié)構(gòu)
1.1.2數(shù)據(jù)結(jié)構(gòu)研究的內(nèi)容
1.2數(shù)據(jù)的邏輯結(jié)構(gòu)
1.2.1基本概念
1.2.2邏輯結(jié)構(gòu)的描述.
1.3數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
1.4算法和算法的效率
1.4.1算法.
1.4.2算法的效率
1.4.3算法效率的評(píng)價(jià)
小結(jié).
實(shí)驗(yàn).
驗(yàn)證性實(shí)驗(yàn)1數(shù)組、指針、結(jié)構(gòu)體練習(xí)
自主設(shè)計(jì)實(shí)驗(yàn)1學(xué)生成績分析程序
習(xí)題1
第2章線性表
2.1線性表的定義與運(yùn)算.
2.1.1線性表的定義.
2.1.2線性表的基本操作
2.2線性表的順序存儲(chǔ)
2.2.1順序表
2.2.2順序表上基本運(yùn)算的實(shí)現(xiàn)
2.3線性表的鏈?zhǔn)酱鎯?chǔ)
2.3.1線性鏈表
2.3.2線性鏈表上基本運(yùn)算的實(shí)現(xiàn)
2.3.3循環(huán)鏈表
2.3.4雙向鏈表
小結(jié).
實(shí)驗(yàn).
驗(yàn)證性實(shí)驗(yàn)2線性表子系統(tǒng).
自主設(shè)計(jì)實(shí)驗(yàn)2多項(xiàng)式求和.
實(shí)用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)第四版
習(xí)題2
第3章棧.
3.1棧的定義和運(yùn)算
3.1.1棧的定義和特性
3.1.2棧的運(yùn)算
3.2棧的存儲(chǔ)和實(shí)現(xiàn)
3.2.1順序棧
3.2.2鏈棧
3.3棧的應(yīng)用舉例
3.3.1數(shù)制轉(zhuǎn)換
3.3.2表達(dá)式求值.
3.3.3子程序調(diào)用.
3.3.4遞歸調(diào)用
3.3.5中斷處理和現(xiàn)場保護(hù)
小結(jié).
實(shí)驗(yàn).
驗(yàn)證性實(shí)驗(yàn)3棧子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)3后綴表達(dá)式求值
習(xí)題3
第4章隊(duì)列.
4.1隊(duì)列的定義和運(yùn)算
4.1.1隊(duì)列的定義和特性
4.1.2隊(duì)列的基本運(yùn)算
4.2隊(duì)列的存儲(chǔ)和實(shí)現(xiàn)
4.2.1順序隊(duì)列
4.2.2鏈隊(duì)列
4.3隊(duì)列應(yīng)用舉例
小結(jié).
實(shí)驗(yàn).
驗(yàn)證性實(shí)驗(yàn)4隊(duì)列子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)4循環(huán)隊(duì)列的實(shí)現(xiàn)和運(yùn)算
習(xí)題4
第5章串.
5.1串的定義和運(yùn)算
5.1.1串的定義
5.1.2串的輸入與輸出
5.1.3串的運(yùn)算
目錄
5.2串的表示和實(shí)現(xiàn)
5.2.1定長順序存儲(chǔ).
5.2.2鏈接存儲(chǔ)
5.2.3串的堆分配存儲(chǔ)結(jié)構(gòu)
5.3串運(yùn)算的實(shí)現(xiàn)
小結(jié).
實(shí)驗(yàn).
驗(yàn)證性實(shí)驗(yàn)5串子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)5字符串分割處理
習(xí)題5
第6章多維數(shù)組和廣義表
6.1多維數(shù)組
6.1.1邏輯結(jié)構(gòu)
6.1.2存儲(chǔ)結(jié)構(gòu)
6.2特殊矩陣的壓縮存儲(chǔ)
6.2.1對(duì)稱矩陣
6.2.2三角矩陣
6.3稀疏矩陣
6.3.1稀疏矩陣的存儲(chǔ).
6.3.2稀疏矩陣的算法.
6.4廣義表
6.4.1廣義表的定義和運(yùn)算
6.4.2廣義表的首尾存儲(chǔ)法
6.4.3廣義表的算法
小結(jié)
實(shí)驗(yàn)
驗(yàn)證性實(shí)驗(yàn)6稀疏矩陣和廣義表子系統(tǒng).
自主設(shè)計(jì)實(shí)驗(yàn)6稀疏矩陣十字鏈表的存儲(chǔ).
習(xí)題6
第7章樹和二叉樹
7.1樹的定義和術(shù)語
7.1.1樹的定義及表示法
7.1.2基本術(shù)語
7.2二叉樹
7.2.1二叉樹的定義
7.2.2二叉樹的性質(zhì)
7.2.3二叉樹的存儲(chǔ)
7.3遍歷二叉樹和線索二叉樹.
7.3.1遍歷二叉樹
實(shí)用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)第四版
7.3.2恢復(fù)二叉樹
7.3.3線索二叉樹
7.4二叉樹的轉(zhuǎn)換.
7.4.1一般樹轉(zhuǎn)換為二叉樹
7.4.2森林轉(zhuǎn)換為二叉樹
7.4.3二叉樹轉(zhuǎn)換為樹和森林
7.5二叉樹的應(yīng)用.
7.5.1二叉樹的基本應(yīng)用
7.5.2標(biāo)識(shí)符樹與表達(dá)式
7.6哈夫曼樹及其應(yīng)用
7.6.1哈夫曼樹的引入.
7.6.2哈夫曼樹的建立.
7.6.3哈夫曼編碼
小結(jié)
實(shí)驗(yàn)
驗(yàn)證性實(shí)驗(yàn)7二叉樹子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)7標(biāo)識(shí)符樹與表達(dá)式求值.
習(xí)題7
第8章圖
8.1圖的定義和基本操作
8.1.1圖的定義
8.1.2圖的相關(guān)術(shù)語
8.1.3圖的基本操作
8.2圖的存儲(chǔ)表示.
8.2.1鄰接矩陣
8.2.2鄰接表.
8.2.3十字鏈表
8.3圖的遍歷
8.3.1深度優(yōu)先搜索
8.3.2廣度優(yōu)先搜索
8.4圖的連通性
8.4.1無向圖的連通分量和生成樹
8.4.2*小生成樹
8.5*短路徑
8.6有向無環(huán)圖及其應(yīng)用
8.6.1拓?fù)渑判?br />8.6.2關(guān)鍵路徑
小結(jié)
實(shí)驗(yàn)
驗(yàn)證性實(shí)驗(yàn)8圖子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)8*小生成樹
目錄
習(xí)題8
第9章查找
9.1查找的基本概念
9.2靜態(tài)查找表
9.2.1順序查找
9.2.2二分查找
9.2.3分塊查找
9.3動(dòng)態(tài)查找表
9.3.1二叉排序樹
9.3.2平衡二叉樹
9.4哈希表
9.4.1哈希表與哈希方法
9.4.2哈希函數(shù)的構(gòu)造方法
9.4.3處理沖突的方法.
小結(jié)
實(shí)驗(yàn)
驗(yàn)證性實(shí)驗(yàn)9查找子系統(tǒng)
自主設(shè)計(jì)實(shí)驗(yàn)9哈希查找
習(xí)題9
第10章排序
10.1概述
10.2插入排序
10.2.1直接插入排序
10.2.2二分插入排序
10.2.3希爾排序.
10.3快速排序法
10.3.1冒泡排序.
10.3.2快速排序.
10.4選擇排序
10.4.1簡單選擇排序
10.4.2樹形選擇排序
10.4.3堆排序
10.5歸并排序
10.6各種排序方法的比較
小結(jié)
實(shí)驗(yàn)
驗(yàn)證性實(shí)驗(yàn)10排序子系統(tǒng).
自主設(shè)計(jì)實(shí)驗(yàn)10雙向冒泡排序
習(xí)題10.
實(shí)用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)第四版
第11章數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
11.1課程設(shè)計(jì)的目的與內(nèi)容
11.1.1課程設(shè)計(jì)的目的
11.1.2課程設(shè)計(jì)的內(nèi)容
11.1.3課程設(shè)計(jì)報(bào)告
11.1.4課程設(shè)計(jì)的考核
11.2課程設(shè)計(jì)的要求.
11.3課程設(shè)計(jì)題目
課題1多項(xiàng)式運(yùn)算
課題2浮點(diǎn)數(shù)的IEEE754標(biāo)準(zhǔn)格式轉(zhuǎn)換
課題3稀疏矩陣的運(yùn)算
課題4非遞歸求解Hanoi問題.
課題5迷宮問題
課題6非遞歸方式遍歷二叉樹.
課題7中綴表達(dá)式轉(zhuǎn)后綴并求值
課題8求字符串中**長度的對(duì)稱子串.
課題9二叉樹的中序線索化及其非棧非遞歸遍歷
課題10求二叉樹中任意兩個(gè)結(jié)點(diǎn)間的距離
課題11把二叉排序樹轉(zhuǎn)換成有序的雙向鏈表.
課題12在二叉樹中找出和為某一值的所有路徑.
課題13判斷整數(shù)序列是否為二叉排序樹的后序遍歷序列.
課題14有向無環(huán)圖的判定及拓?fù)渑判?br />課題15求AOE網(wǎng)的關(guān)鍵路徑.
課題16求有向圖的強(qiáng)連通分量
課題17基于十字鏈表有向圖的遍歷.
課題18求*小生成樹
課題19Dijkstra算法求*短路徑
課題20雙拼輸入法的快速定位
課題21連通問題
課題22哈希查找的實(shí)現(xiàn)與分析
課題23文件記錄讀取并排序
課題24平衡二叉樹的構(gòu)造及輸出
課題25馬對(duì)棋盤方格的遍歷
課題26求兩個(gè)字符串的擴(kuò)展距離
課題27求汽車*少加油次數(shù)問題
課題28大整數(shù)運(yùn)算
附錄A數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)系統(tǒng)的組裝.
參考文獻(xiàn)