《普通高等院校計算機專業(本科)實用教程系列:數據結構實用教程(Java語言描述)》是為全國高等院校計算機及相關專業開設數據結構課程而精心編著的一本實用教材。《普通高等院校計算機專業(本科)實用教程系列:數據結構實用教程(Java語言描述)》按照面向對象的程式設計方法,採用目前廣泛使用的Java語言描述各種數據結構和運算方法,使得一種數據結構對應一種操作接口,進而通過不同的存儲類型來實現。《普通高等院校計算機專業(本科)實用教程系列:數據結構實用教程(Java語言描述)》共分為11章,依次為緒論、集合、線性表、稀疏矩陣和廣義表、棧和佇列、樹和二叉樹、常用二叉樹、圖、圖的套用、查找、排序。
基本介紹
- 書名:普通高等院校計算機專業
- 出版社:清華大學出版社
- 頁數:331頁
- 開本:16
- 定價:35.00
- 作者:徐孝凱
- 出版日期:2013年1月1日
- 語種:簡體中文
- ISBN:9787302307020
內容簡介
圖書目錄
1.1基本概念/1
1.2算法描述/11
1.3算法評價/13
第2章集合/20
2.1集合的定義和運算/20
2.1.1集合的定義/20
2.1.2集合的抽象數據類型/20
2.1.3集合運算舉例/21
2.2集合的順序存儲結構和操作實現/23
2.3集合的連結存儲結構和操作實現/30
2.3.1連結存儲的概念/30
2.3.2連結集合類的定義和實現/33
2.4集合套用舉例/39
第3章線性表/47
3.1線性表的定義和運算/47
3.1.1線性表的定義/47
3.1.2線性表的抽象數據類型/48
3.1.3線性表運算舉例/49
3.2線性表的順序存儲結構和操作實現/52
3.3有序線性表的定義和實現/60
3.4連結存儲的一般概念和方法/65
3.5線性表的連結存儲結構和操作實現/70
3.6有序線性表的連結存儲結構和操作實現/76
3.7線性表套用舉例——多項式計算/78
3.7.1多項式表示與求值/78
3.7.2兩個多項式相加/82
第4章稀疏矩陣和廣義表/86
4.1稀疏矩陣/86
4.1.1稀疏矩陣的定義/86
4.1.2稀疏矩陣的轉置運算/88
4.1.3稀疏矩陣的加法運算/90
4.1.4使用稀疏矩陣的程式舉例/92
4.2廣義表/94
4.2.1廣義表的定義/94
4.2.2廣義表的存儲結構/96
4.2.3廣義表類的定義/97
4.2.4廣義表的運算/99
4.2.5簡單程式舉例/103
第5章棧和佇列/105
5.1棧的定義和運算/105
5.2棧的順序存儲結構和操作實現/106
5.3棧的連結存儲結構和操作實現/110
5.4棧的簡單套用舉例/112
5.5算術表達式的計算/116
5.6棧與遞歸/124
5.7佇列/133
5.7.1佇列的定義和運算/133
5.7.2佇列的順序存儲結構和操作實現/134
5.7.3佇列的連結存儲結構和操作實現/139
第6章樹和二叉樹/141
6.1樹的概念/141
6.1.1樹的定義/141
6.1.2樹的表示/142
6.1.3樹的基本術語/142
6.1.4樹的性質/144
6.2二叉樹/145
6.2.1二叉樹的定義/145
6.2.2二叉樹的性質/145
6.2.3二叉樹的抽象數據類型/147
6.2.4二叉樹的存儲結構/148
6.3二叉樹遍歷/153
6.4二叉樹的其他運算/156
6.5調試二叉樹算法舉例/160
6.6樹的存儲結構和運算/161
6.6.1樹的抽象數據類型/161
6.6.2樹的存儲結構/162
6.6.3樹的運算/166
6.6.4調試普通樹算法舉例/171
第7章常用二叉樹/173
7.1二叉搜尋樹/173
7.1.1二叉搜尋樹的定義/173
7.1.2二叉搜尋樹的抽象數據類型和連結存儲類/174
7.1.3二叉搜尋樹的運算方法/175
7.2堆/181
7.2.1堆的定義/181
7.2.2堆的接口類/182
7.2.3堆的存儲結構和順序存儲類/182
7.2.4堆的運算/184
7.3哈夫曼樹/189
7.3.1基本術語/189
7.3.2構造哈夫曼樹/190
7.3.3哈夫曼編碼/193
7.4平衡二叉樹/195
7.4.1平衡二叉樹的定義/195
7.4.2平衡二叉樹的調整/197
第8章圖/202
8.1圖的概念/202
8.1.1圖的定義/202
8.1.2圖的基本術語/203
8.2圖的存儲結構/205
8.2.1鄰接矩陣/205
8.2.2鄰接表/207
8.2.3邊集數組/208
8.3圖的抽象數據類型和接口類/209
8.4圖的鄰接矩陣和鄰接表存儲類/210
8.5圖的遍歷/214
8.5.1深度優先搜尋遍歷/214
8.5.2廣度優先搜尋遍歷/217
8.5.3非連通圖的遍歷/219
8.6對圖的其他運算的算法/219
第9章圖的套用/231
9.1圖的生成樹和最小生成樹/231
9.1.1生成樹的概念/231
9.1.2普里姆算法/233
9.1.3克魯斯卡爾算法/237
9.2最短路徑/240
9.2.1最短路徑的概念/240
9.2.2從一頂點到其餘各頂點的最短路徑/241
9.2.3每對頂點之間的最短路徑/246
9.3拓撲排序/250
9.3.1拓撲排序的概念/250
9.3.2拓撲排序算法/252
9.4關鍵路徑/256
第10章查找/264
10.1查找的基本概念/264
10.2順序表查找/265
10.2.1順序查找/265
10.2.2二分查找/267
10.3索引查找/269
10.3.1索引的概念/269
10.3.2索引存儲舉例/270
10.3.3索引查找算法/273
10.3.4分塊查找/274
10.4散列查找/276
10.4.1散列的概念/276
10.4.2散列函式/278
10.4.3處理衝突的方法/280
10.4.4散列表的運算/284
10.5B樹查找/293
10.5.1B_樹的定義/293
10.5.2B_樹查找/294
10.5.3B_樹的插入/296
10.5.4B_樹的刪除/299
10.5.5定義B_樹的類/302
10.5.6B+樹簡介/304
第11章排序/306
11.1排序的基本概念/306
11.2插入排序/308
11.3選擇排序/309
11.3.1直接選擇排序/309
11.3.2堆排序/310
11.4交換排序/313
11.4.1氣泡排序/314
11.4.2快速排序/315
11.5歸併排序/318
11.6外排序/322
11.6.1外排序的概念/322
11.6.2外排序算法/323
參考文獻/332
文摘
插圖:
字元類型中的每個值(字元)在計算機存儲系統中通常用一個或兩個位元組表示,若採用一個位元組,則字元類型的表示範圍為0~255或—128~127,能夠至多對256種不同的字元進行編碼。對字元類型的數據允許進行的運算主要為賦值和各種關係運算。字元串類型中的每個值(字元串)為字元的順序排列結構(即線性結構),字元串類型的取值範圍很廣泛,任何一個字元序列,如姓名、地址、編號等非數值的數據信息都是一個字元串。對字元串的運算主要有求字元串的長度、字元串的複製、字元串的連線、字元串的比較等。
1)數據類型分類
數據類型可以被分為簡單類型和結構類型兩大類。簡單類型中的每個值通常只作為整體使用,如一個整數、實數、字元、指針、枚舉量等都是相應簡單類型中的數據。結構類型由簡單類型按照一定的規則構造而成,並且結構類型仍可以包含結構類型,所以一種結構類型中的數據(即結構數據)可以分解為若干個簡單數據或結構數據,每個結構數據仍可再分。例如,數組就是一種具有線性數據結構的結構數據類型,數組中的每一種數組值包含有固定個數的同一類型的數據,每個數據(元素)都可以通過下標運算符直接訪問。記錄也是一種具有線性數據結構的結構數據類型,記錄中的每一個記錄值包含固定個數的不同類型的數據成員,每個數據成員都可以通過成員運算符和成員名直接訪問。另外,像字元串和檔案也都是計算機高級語言中經常提供的結構數據類型。
2)數據類型與數據值
無論是簡單類型還是結構類型都有“型”和“值”的區別,“型”是“值”的抽象定義,一種數據類型中的任一數據稱為該類型中的一個值,又被稱為實例,該值(實例)與所屬數據類型具有完全相同的邏輯結構,數據類型所規定的運算都是在值上進行的。所以在一般的敘述中,並不明確指出是數據“型”還是數據“值”,讀者應根據上下文加以理解。例如,提到記錄時,當討論的是記錄結構則認為是記錄型,當討論的是具體一條記錄時則認為是記錄值。
3)數組的邏輯結構
對於在計算機語言中使用的數組、記錄、字元串和檔案等結構數據類型,每個值中的元素(成分)是按位置前後有序排列的,所以它們各自都具有線性數據結構。數組的邏輯結構是線性數據結構,採用二元組形式可描述為:
a[i]為數組中的下標為i的元素,n為大於等於1的整數,用來表明數組中元素的個數,即數組長度,數組元素的下標從0到,2—1,數組中前後相鄰位置上的兩個元素為一個序偶,其前一元素a[i]是後一元素a[i+1]的前驅,而a[i+1]是a[i]的後繼,第一個元素a【0]無前驅元素,最後一個元素a[n—1]無後繼元素。
按數組下標的個數,可把數組分為一維、二維、三維等。一維數組中的每個元素只包含一個下標,二維數組中的每個元素包含兩個下標,第一個稱為行下標,第二個稱為列下標。