內容介紹
《數據結構與程式設計》共分為9章,最後有一套實驗題目。每章都配置了本章要點、本章小結和習題,便於讀者理解、消化書中的內容。《數據結構與程式設計》的最後,有一套實驗題目,共有六個實驗,每個實驗又包含多道實驗題目,每道實驗題都從問題描述、基本要求、測試數據、實驗提示、選作內容等幾個環節給予解析,通過實驗進一步提高讀者運用數據結構知識解決實際問題的能力。全書融入了作者長期的教學經驗,在編排上注意體現教學思路的完整性,力求做到深入淺出、通俗易懂,同時也考慮了自學者的學習方便,適於教學和自學。
《數據結構與程式設計》的讀者對象是學習數據結構課程的本、專科及高職類學生,也可作為信息類各專業考試、高校教師以及其他專業技術人員的參考用書。
圖書目錄
第1章緒論1
1.1數據結構概述1
1.2算法及其複雜度3
1.2.1什麼是算法3
1.2.2有關算法複雜度的概念4
1.2.3算法複雜度分析4
本章小結8
習題一8第2章線性表10
2.1線性表的概念10
2.2順序存儲的線性表11
2.2.1順序線性表的基本操作11
2.2.2順序線性表套用舉例15
2.3線性鍊表17
2.3.1向前鍊表18
2.3.2循環鍊表25
2.3.3雙向循環鍊表28
2.4線性表套用舉例31
本章小結42
習題二42
第3章棧和佇列46
3.1棧46
3.1.1棧的定義和特性46
3.1.2棧的順序存儲方式46
3.1.3棧的連結存儲方式49
3.2棧的套用舉例51
3.3佇列56
3.3.1佇列的定義和特性56
3.3.2佇列的順序存儲方式56
3.3.3佇列的連結存儲方式61
3.4佇列套用舉例63
本章小結68
習題三68
數據結構與程式設計目錄
第4章串72
4.1串的基本概念和術語72
4.1.1串的定義72
4.1.2串的有關術語72
4.2串的存儲結構73
4.2.1順序存儲結構73
4.2.2鏈式存儲結構74
4.3串的基本操作75
4.3.1串的基本操作75
4.3.2順序串的操作舉例76
4.4串的模式匹配算法78
4.4.1簡單的模式匹配算法78
4.4.2改進後的模式匹配算法82
4.5串操作套用實例86
4.5.1堆存儲結構86
4.5.2文本編輯86
本章小結90
習題四91
第5章數組和廣義表92
5.1數組的定義92
5.2數組的存儲結構93
5.3特殊矩陣的壓縮存儲96
5.3.1對稱矩陣96
5.3.2三角矩陣97
5.3.3帶狀矩陣98
5.4稀疏矩陣99
5.4.1稀疏矩陣的三元組表存儲99
5.4.2稀疏矩陣的十字鍊表存儲105
5.5數組套用實例111
5.6廣義表117
5.6.1廣義表的基本概念和性質117
5.6.2廣義表的存儲118
5.6.3廣義表的基本操作119
本章小結121
習題五121
第6章樹123
6.1樹的基本概念和術語123
6.1.1樹的定義123
6.1.2樹的有關術語124
6.2二叉樹125
6.2.1二叉樹的定義125
6.2.2二叉樹的性質126
6.2.3二叉樹的存儲結構127
6.2.4二叉樹的建立128
6.3遍歷二叉樹131
6.3.1遍歷二叉樹的順序131
6.3.2遍歷順序與二叉樹的結構131
6.3.3遍歷二叉樹的遞歸算法132
6.3.4遍歷二叉樹的非遞歸算法134
6.3.5按層次遍歷二叉樹138
6.3.6遍歷二叉樹的套用141
6.4線索二叉樹144
6.4.1線索二叉樹的建立145
6.4.2單步遍歷線索二叉樹148
6.5哈夫曼樹及套用155
6.5.1哈夫曼樹的定義155
6.5.2哈夫曼樹的構造算法155
6.5.3哈夫曼樹的套用158
6.6樹和森林161
6.6.1樹的存儲結構161
6.6.2森林與二叉樹的轉換164
本章小結165
習題六165
第7章圖169
7.1圖的基本概念和術語169
7.1.1圖的定義169
7.1.2圖的基本概念和術語170
7.1.3帶權圖171
7.2圖的存儲結構171
7.2.1鄰接矩陣171
7.2.2鄰接表172
7.3圖的遍歷172
7.3.1深度優先搜尋172
7.3.2廣度優先搜尋173
7.3.3圖的遍歷程式174
7.4圖的生成樹182
7.4.1圖的生成樹和最小生成樹182
7.4.2Prim算法183
7.4.3Kruskal算法186
7.5最短路徑問題189
7.5.1單源點最短路徑問題189
7.5.2每對頂點間的最短路徑問題192
7.6拓撲排序195
本章小結199
習題七199
第8章查找204
8.1基本概念204
8.2順序表的查找205
8.2.1順序查找205
8.2.2折半查找207
8.2.3分塊查找210
8.3二叉排序樹211
8.3.1二叉排序樹的定義211
8.3.2二叉排序樹的基本操作212
8.4哈希表220
8.4.1哈希表的概念220
8.4.2哈希函式的構造方法221
8.4.3解決衝突的方法223
8.4.4哈希表程式舉例225
本章小結227
習題八227第9章排序229
9.1排序的基本概念229
9.2插入排序230
9.2.1直接插入排序230
9.2.2折半插入排序234
9.2.3希爾排序236
9.3交換排序240
9.3.1冒泡排序240
9.3.2快速排序242
9.4選擇排序247
9.4.1簡單選擇排序247
9.4.2樹形選擇排序250
9.4.3堆排序251
9.5歸併排序256
9.6基數排序259
9.6.1多關鍵字的排序259
9.6.2鏈式基數排序260
9.7各種排序方法的綜合比較266
9.8外部排序268
9.8.1外存信息的存儲介質268
9.8.2多路平衡歸併269
9.8.3平衡歸併排序276
本章小結278
習題九278實驗題280實驗一線性表280
實驗二棧、佇列的算法設計282
實驗三串及其套用284
實驗四樹及其套用285
實驗五圖及其套用286
實驗六查找和排序287參考文獻289
第1章Java語言背景、特點與開發環境
11.1計算機程式語言1
1.2Java的產生背景2
1.3Java的發展2
1.4Java技術的套用領域3
1.5Java工作原理及其特點3
1.5.1跨平台特性4
1.5.2面向對象特性4
1.5.3無用記憶體(垃圾)自動回收4
1.5.4健壯且安全5
1.5.5多執行緒支持5
1.5.6簡單易用5
1.6Java程式開發環境6
1.6.1安裝6
1.6.2安裝Java幫助文檔6
1.6.3配置環境變數6
1.6.4Java程式編寫、編譯與運行7
本章小結9
習題9
第2章Java語言程式設計基礎10
2.1Java程式的基本結構10
2.2Java符號集11
2.2.1關鍵字11
2.2.2標識符122.2.3程式中的注釋12
2.3數據的簡單類型13
2.4常量14
2.4.1整數14
2.4.2浮點數15
2.4.3字元型常量15
2.4.4布爾型常量15
2.5變數和變數聲明15
Java語言編程實踐教程目錄
2.6變數的作用域及初始化16
2.6.1作用域16
2.6.2初始化17
2.7運算符18
2.7.1算術運算符19
2.7.2關係和布爾運算符21
2.7.3位運算符23
2.7.4賦值運算符和數據的類型轉換24
2.7.5條件運算符25
2.8表達式26
本章小結26
習題27
第3章Java流程控制與數組28
3.1Java程式流程控制28
3.2條件語句if-else29
3.3多分支語句switch和中斷語句break31
3.4循環語句35
3.4.1while語句35
3.4.2do-while語句35
3.4.3for語句36
3.5continue語句38
3.6return語句40
3.7數組和字元串41
3.7.1數組聲明41
3.7.2數組元素的引用及初始化42
3.7.3字元串44
本章小結45
習題45第4章Java面向對象的基本概念474.1面向對象的概念47
4.2面向對象編程基礎48
4.2.1抽象原則48
4.2.2對象49
4.2.3訊息49
4.2.4類50
4.2.5類與對象的關係51
4.3面向對象編程的基本特徵51
4.3.1封裝性51
4.3.2繼承性52
4.3.3多態性53
4.4類54
4.4.1定義類的一般格式54
4.4.2封裝機制55
4.4.3成員變數59
4.4.4成員方法62
4.5Java類庫75
4.5.1Java類庫的優點75
4.5.2Java類庫中的常用包76
4.6對象78
4.6.1對象的創建78
4.6.2對象的使用79
4.6.3對象的初始化與構造方法81
本章小結83
習題83第5章Java類與對象的高級特徵845.1Java面向對象編程的套用總結84
5.2特殊類的創建與訪問85
5.2.1抽象類85
5.2.2內部類85
5.2.3最終類90
5.2.4包90
5.2.5接口92
5.2.6常用包中的類的使用方法94
5.3構造方法94
5.3.1構造方法的概念95
5.3.2重載構造方法97
5.3.3默認構造方法98
5.3.4構造方法的調用98
5.3.5構造方法的作用域與訪問級別99
5.3.6構造方法的主要特點小結99
5.4方法重載與覆蓋100
5.4.1方法重載100
5.4.2方法覆蓋100
5.5創建對象的各種方式及對象的多態性108
5.5.1創建對象的各種方式108
5.5.2對象的多態性111
5.5.3關於對象的幾個主要關鍵字112
5.5.4Java主要修飾符匯總114
5.5.5程式實例114
本章小結115
習題116第6章Java輸入輸出系統121
6.1輸入輸出流概述121
6.1.1輸入輸出流類的層次結構121
6.1.2標準輸入輸出流122
6.1.3I/O中的異常122
6.2檔案處理122
6.2.1檔案處理的類結構123
6.2.2檔案處理的常用類與隨機訪問檔案類的常用方法123
6.2.3程式實例126
6.3位元組流128
6.3.1InputStream和OutputStream類的層次結構128
6.3.2InputStream和OutputStream類的常用方法129
6.3.3程式實例130
6.4字元流130
6.4.1Reader和Writer類的層次結構130
6.4.2Reader和Writer類的常用方法131
6.4.3程式實例131
6.5過濾流133
6.5.1過濾流的類結構133
6.5.2過濾流類的常用方法134
6.5.3程式實例134
6.6對象的串列化135
6.6.1對象的串列化接口與類135
6.6.2串列化方法135
6.6.3串列化的目的136
6.6.4程式實例138
本章小結139
習題140第7章Java圖形用戶界面144
7.1AWT與Swing組件144
7.1.1AWT組件145
7.1.2Swing組件153
7.2布局管理器168
7.2.1FlowLayout流布局管理器168
7.2.2BorderLayout邊界布局管理器169
7.2.3GridLayout格線布局管理器170
7.2.4CardLayout卡片布局管理器171
7.2.5GridBagLayout格線包布局管理器172
7.2.6BoxLayout盒布局管理器175
7.3事件處理175
7.3.1事件處理機制175
7.3.2創建互動三部曲177
7.4AWT繪圖186
7.4.1基本的繪圖方法186
7.4.2Graphics類及其他相關類187
7.5JavaApplet188
本章小結189
習題190第8章Java異常處理191
8.1Java異常處理概述191
8.2Java異常處理機制及其優點192
8.2.1Java異常處理機制192
8.2.2Java異常處理機制優點193
8.2.3Java異常處理具體形式193
8.3Java異常類196
8.4Java異常處理語句198
8.4.1throws聲明:聲明可能會出現的異常類199
8.4.2throw語句:拋出異常對象199
8.4.3try-catch語句:捕獲異常200
8.4.4finally語句:任何情況下都必須執行的語句204
8.4.5程式實例205
8.5自定義異常類205
本章小結207
習題207
第9章JDBC資料庫編程210
9.1JDBC概述210
9.1.1JDBC簡介210
9.1.2JDBCURL211
9.1.3JDBC-ODBC橋212
9.2JDBC編程212
9.2.1常用的JDBCAPI類212
9.2.2JDBC編程的一般步驟213
9.2.3用JDBC實現資料庫查詢和更新215
9.3Java資料庫編程218
本章小結221
習題222
參考文獻223
附錄AJava關鍵字分類224
附錄BJava運算符優先權表226
附錄CASCII表228
附錄DJava5.0部分常用包中的部分常用類230