本書內容主要包括緒論,線性表,棧與隊列,串、數(shù)組和廣義表,樹,圖,查找,排序,以及項目設計指導。每章開始都給出本章導讀和教學目標,使學生在學習之前就能明白要重點掌握的內容;章后附有習題及實訓,以便學生鞏固所學知識。項目設計指導一章給出了幾種設計題目及設計的思想供學生選擇,有助于教師指導學生完成小型項目設計任務。 本書可作為高等普通本科院校,高等職業(yè)本科、?茖W校,成人高等學校計算機類專業(yè)或信息類相關專業(yè)的教材,也可作為非計算機專業(yè)學生的選修教材,還可作為計算機應用人員和工程技術人員的自學參考書。
用Python實現(xiàn),在軍隊級獲獎項目中運用數(shù)據(jù)結構知識實現(xiàn)加密。
數(shù)據(jù)結構是計算機學科的核心課程,也是計算機專業(yè)的一門重要專業(yè)基礎課。這門課程主要研究如何合理地組織數(shù)據(jù);怎樣在計算機中有效地表示數(shù)據(jù)和處理數(shù)據(jù)。這門課程的教學要求是: 使學生學會分析、研究計算機加工的數(shù)據(jù)結構的特性,以便選擇適當?shù)倪壿嫿Y構、存儲結構及相應的算法,并初步掌握算法的時間分析和空間分析技術。另外,學習本課程也是復雜程序設計的訓練過程,訓練學生編寫的程序結構清楚、正確易讀,符合軟件工程的規(guī)范,為后續(xù)課程的學習打下良好的基礎。人工智能時代,數(shù)據(jù)結構的知識在各種知識圖譜、算法模型設計中的作用越來越突出。
本書共9章。第1章介紹數(shù)據(jù)結構和算法的基本概念和常用術語;第2~6章介紹基本的數(shù)據(jù)結構,分別討論線性表,棧與隊列,串、數(shù)組和廣義表,樹和圖幾種結構類型數(shù)據(jù)的邏輯結構和存儲結構,以及相應的算法;第7章和第8章介紹了幾種常用的查找和排序方法;第9章是本書的特色,增加了項目設計指導的內容,使學生在學完基本知識的同時,能夠綜合利用所學知識完成一些實際課題的設計與制作。另外,為了便于教學,章后還配有習題和實訓。本書概念表述清楚、簡潔,內容由淺入深,強調實踐環(huán)節(jié),利于教學和自學。
本書采用Python語言作為數(shù)據(jù)結構和算法的描述語言,之所以選擇Python語言作為全書的描述語言,是因為Python語言在人工智能中廣泛應用,書中的全部程序學生上機就可以按照操作步驟運行。全代碼實現(xiàn)考慮程序設計語言學習環(huán)節(jié)相對薄弱的同學,以使他們也能學會數(shù)據(jù)結構,而不為編寫程序所難倒,從而放棄該門課程的學習。
本書可作為高等普通本科院校,高等職業(yè)本科、?茖W校,成人高等學校計算機類專業(yè)或信息類相關專業(yè)的教材,也可作為非計算機專業(yè)學生的選修教材,還可作為計算機應用人員和工程技術人員的自學參考書。本書由喬國榮編著。本書作者講授的數(shù)據(jù)結構課程在2009年獲得遼寧省精品課。
在本書的編寫過程中得到了作者所在單位領導與同事的大力支持,在此一并表示衷心的感謝。
由于編者水平有限,書中難免有不足之處,懇請讀者批評指正。
編者2022年9月
第1章緒論1
1.1數(shù)據(jù)結構的基本概念1
1.1.1數(shù)據(jù)結構的定義1
1.1.2數(shù)據(jù)的邏輯結構及存儲結構3
1.1.3數(shù)據(jù)結構有關概念及術語4
1.2算法和算法描述5
1.2.1算法5
1.2.2算法描述6
1.3算法分析6
1.3.1空間復雜度6
1.3.2時間復雜度7
1.4本章小結8
習題18
第2章線性表11
2.1線性表的邏輯結構11
2.1.1線性表的定義11
2.1.2線性表的基本操作12
2.2線性表的順序存儲結構13
2.2.1線性表的順序存儲順序表13
2.2.2順序表基本操作的實現(xiàn)13
2.2.3順序表的應用舉例18
2.3線性表的鏈式存儲結構19
2.3.1線性表的鏈式存儲鏈表19
2.3.2單鏈表21
2.3.3循環(huán)鏈表42
2.3.4雙向鏈表43
2.3.5單鏈表應用舉例54
2.4本章小結59習題259
實訓162
第3章棧與隊列66
3.1棧66
3.1.1棧的定義66
3.1.2棧的順序存儲及其基本操作的實現(xiàn)67
3.1.3棧的鏈式存儲及其基本操作的實現(xiàn)75
3.1.4棧的應用舉例81
3.2隊列84
3.2.1隊列的定義84
3.2.2隊列的順序存儲及其基本操作的實現(xiàn)84
3.2.3隊列的鏈式存儲及其基本操作的實現(xiàn)92
3.2.4隊列的應用舉例97
3.3本章小結98
習題398
實訓2102
◆數(shù)據(jù)結構(Python版)目錄第4章串、數(shù)組和廣義表107
4.1串107
4.1.1串的定義和特性107
4.1.2串的順序存儲及其基本操作實現(xiàn)108
4.1.3串的鏈式存儲及其基本操作實現(xiàn)123
4.1.4串的應用舉例124
4.2數(shù)組124
4.2.1數(shù)組的定義和運算124
4.2.2數(shù)組的順序存儲結構125
4.2.3矩陣的壓縮存儲126
4.2.4稀疏矩陣127
4.3廣義表135
4.3.1廣義表的定義和特性135
4.3.2廣義表的存儲結構及其基本操作實現(xiàn)136
4.4本章小結137
習題4138
實訓3139
第5章樹143
5.1樹的概述143
5.1.1樹的定義及基本術語143
5.1.2樹的表示144
5.2二叉樹及其遍歷145
5.2.1二叉樹的定義145
5.2.2二叉樹的重要性質145
5.2.3二叉樹的存儲結構147
5.2.4二叉樹的遍歷149
5.3線索二叉樹158
5.3.1線索二叉樹的定義159
5.3.2線索二叉樹的基本操作162
5.4樹和森林162
5.4.1樹的存儲結構162
5.4.2二叉樹與樹的轉換167
5.4.3森林與二叉樹的轉換167
5.4.4樹與森林的遍歷168
5.5二叉樹應用實例169
5.5.1二叉排序樹169
5.5.2平衡二叉樹177
5.5.3B樹179
5.5.4哈夫曼樹182
5.6本章小結184
習題5185
實訓4189
第6章圖192
6.1圖的基本概念192
6.1.1圖的定義192
6.1.2圖的基本術語193
6.2圖的存儲結構195
6.2.1鄰接矩陣195
6.2.2鄰接表197
6.3圖的遍歷201
6.3.1深度優(yōu)先搜索201
6.3.2廣度優(yōu)先搜索205
6.4最小生成樹209
6.4.1普里姆算法210
6.4.2克魯斯卡爾算法214
6.5最短路徑220
6.5.1單源最短路徑220
6.5.2每對頂點之間的最短路徑225
6.6拓撲排序228
6.6.1AOV網(wǎng)228
6.6.2拓撲排序的實現(xiàn)229
6.7本章小結232
習題6233
實訓5235
第7章查找239
7.1查找的基本概念239
7.2順序查找240
7.3二分查找242
7.4分塊查找244
7.5哈希表查找248
7.5.1哈希表查找的基本概念248
7.5.2構造哈希函數(shù)的方法249
7.5.3哈希沖突的解決方法251
7.5.4哈希查找效率的分析256
7.6本章小結256
習題7257
實訓6260
第8章排序262
8.1排序的基本概念262
8.2插入排序263
8.2.1直接插入排序264
8.2.2二分法插入排序265
8.2.3希爾排序266
8.3選擇排序268
8.3.1簡單選擇排序268
8.3.2堆排序269
8.4交換排序273
8.4.1冒泡排序273
8.4.2快速排序275
8.5歸并排序277
8.6基數(shù)排序279
8.7本章小結282
習題8283
實訓7286
第9章項目設計指導291
9.1項目設計標準291
9.2項目設計題目及設計要求292
9.3計算機線程池正在運行的線程檢測295
9.4電影票預訂系統(tǒng)實例297
9.5本章小結304