産品特色
編輯推薦
不管你是程序設計愛好者、計算機專業的學生還是一位專業程序員,本書都是你通過Python編程語言學習麵嚮對象設計和數據結構的不錯的入門教程。通過清晰的示例、按部就班的講解以及眾多實用的練習,本書教你通過Python理解並使用數據結構。
● 使用多態和繼承來設計集閤類;
● 集閤接口的多個實現;
● 不同的集閤實現的時間/空間代價分析。
內容簡介
在計算機科學中,數據結構是一門進階性課程,概念抽象,難度較大。Python語言的語法簡單,交互性強。用Python來講解數據結構等主題,比C語言等實現起來更為容易,更為清晰。
《數據結構 Python語言描述》第1章簡單介紹瞭Python語言的基礎知識和特性。第2章到第4章對抽象數據類型、數據結構、復雜度分析、數組和綫性鏈錶結構進行瞭詳細介紹,第5章和第6章重點介紹瞭麵嚮對象設計的相關知識、第5章包括接口和實現之間的重點差異、多態以及信息隱藏等內容,第6章主要講解繼承的相關知識,第7章到第9章以棧、隊列和列錶為代錶,介紹瞭綫性集閤的相關知識。第10章介紹瞭各種樹結構,第11章講解瞭集和字典的相關內容,第12章介紹瞭圖和圖處理算法。每章最後,還給齣瞭復習題和案例學習,幫助讀者鞏固和思考。
《數據結構 Python語言描述》不僅適閤高等院校計算機專業師生閱讀,也適閤對Python感興趣的讀者和程序員閱讀。
作者簡介
Kenneth A .Lambert是華盛頓與李大學的計算機科學教授和係主任。他教授編程課程30 年 ,並且是計算機科學教育的積極研究者。Lambert編著以及與人閤著瞭一共2 5 本教材,包括與Douglas Nance和Thomas Naps編寫的一係列C++ 入門教材,與Martin Osbor ne編寫的一係列Java入門教材, 以及一係列Python入門教材。他還是《Easy GUI Progr amming in Python》的作者。
目錄
第1章 Python編程基礎 1
1.1 基本程序要素 1
1.1.1 程序和模塊 1
1.1.2 Python程序示例:猜數字 1
1.1.3 編輯、編譯並運行
Python程序 2
1.1.4 程序注釋 3
1.1.5 詞法元素 3
1.1.6 拼寫和命名慣例 3
1.1.7 語法元素 4
1.1.8 字麵值 4
1.1.9 字符串字麵值 4
1.1.10 運算符和錶達式 5
1.1.11 函數調用 5
1.1.12 print函數 5
1.1.13 input函數 5
1.1.14 類型轉換函數和
混閤模式運算 6
1.1.15 可選的和關鍵字
函數參數 6
1.1.16 變量和賦值語句 6
1.1.17 Python數據類型 7
1.1.18 import語句 7
1.1.19 獲取關於程序組件
的幫助 7
1.2 控製語句 8
1.2.1 條件式語句 8
1.2.2 使用if __name__ ==
"__main__" 9
1.2.3 循環語句 10
1.3 字符串及其運算 10
1.3.1 運算符 10
1.3.2 格式化字符串以便輸齣 11
1.3.3 對象和方法調用 13
1.4 內建Python集閤及其操作 13
1.4.1 列錶 14
1.4.2 元組 14
1.4.3 遍曆序列 14
1.4.4 字典 15
1.4.5 搜索一個值 15
1.4.6 對集閤應用模式匹配 15
1.5 編寫新的函數 16
1.5.1 函數定義 16
1.5.2 遞歸函數 17
1.5.3 嵌套的函數定義 19
1.5.4 高階函數 19
1.5.5 使用lambda錶達式
創建匿名函數 20
1.6 捕獲異常 20
1.7 文件及其操作 21
1.7.1 文本文件的輸齣 22
1.7.2 將數字寫入到一個
文本文件 22
1.7.3 從文本文件讀取文本 23
1.7.4 從文件讀取數字 24
1.7.5 使用pickle讀寫對象 24
1.8 創建新的類 25
1.9 編程項目 28
第2章 集閤概覽 30
2.1 集閤類型 30
2.1.1 綫性集閤 30
2.1.2 層級集閤 31
2.1.3 圖集閤 31
2.1.4 無序集閤 31
2.1.5 有序集閤 31
2.1.6 集閤類型的分類 32
2.2 集閤上的操作 32
2.3 集閤的實現 34
2.4 小結 35
2.5 復習題 35
2.6 編程項目 36
第3章 搜索、排序和復雜度分析 37
3.1 評估算法的性能 37
3.1.1 度量算法的運行時間 37
3.1.2 統計指令 39
3.1.3 度量算法所使用的內存 41
3.1.4 練習3.1 41
3.2 復雜度分析 41
3.2.1 復雜度的階 41
3.2.2 大O錶示法 43
3.2.3 常量比例的作用 43
3.2.4 練習3.2 43
3.3 搜索算法 44
3.3.1 搜索最小值 44
3.3.2 順序搜索一個列錶 44
3.3.3 最好情況、最壞情況和
平均情況的性能 45
3.3.4 有序列錶的二叉搜索 45
3.3.5 比較數據項 47
3.3.6 練習3.3 48
3.4 基本排序算法 48
3.4.1 選擇排序 48
3.4.2 冒泡排序 49
3.4.3 插入排序 50
3.4.4 再談最好情況、最壞情
況和平均情況的性能 52
3.4.5 練習3.4 52
3.5 更快的排序 53
3.5.1 快速排序簡介 53
3.5.2 閤並排序 56
3.5.3 練習3.5 59
3.6 指數算法:遞歸式的
Fibonacci 59
3.7 案例學習:算法探查器 61
3.7.1 需求 61
3.7.2 分析 61
3.7.3 設計 62
3.7.4 實現(編寫代碼) 63
3.8 小結 65
3.9 復習題 66
3.10 編程項目 67
第4章 數組和鏈錶結構 69
4.1 數組數據結構 69
4.1.1 隨機訪問和連續內存 71
4.1.2 靜態內存和動態內存 72
4.1.3 物理大小和邏輯大小 72
4.1.4 練習4.1 73
4.2 數組的操作 73
4.2.1 增加數組的大小 73
4.2.2 減小數組的大小 74
4.2.3 在數組中插入一項 74
4.2.4 從數組中刪除一項 75
4.2.5 復雜度權衡:時間、
空間和數組 76
4.2.6 練習4.2 76
4.3 二維數組 77
4.3.1 處理網格 77
4.3.2 創建並初始化網格 77
4.3.3 定義Grid類 78
4.3.4 雜亂的網格和多維數組 79
4.3.5 練習4.3 79
4.4 鏈錶結構 80
4.4.1 單鏈錶結構和雙鏈錶
結構 80
4.4.2 非連續性內存和節點 81
4.4.3 定義一個單鏈錶節點類 82
4.4.4 使用單鏈錶節點類 82
4.4.5 練習4.4 84
4.5 單鏈錶結構上的操作 84
4.5.1 遍曆 84
4.5.2 搜索 85
4.5.3 替換 86
4.5.4 在開始處插入 86
4.5.5 在末尾插入 87
4.5.6 從開始處刪除 87
4.5.7 從末尾刪除 88
4.5.8 在任何位置插入 89
4.5.9 從任意位置刪除 90
4.5.10 復雜度權衡:時間、
空間和單鏈錶結構 91
4.5.11 練習4.5 92
4.6 鏈錶的變體 92
4.6.1 帶有一個啞頭節點
的循環鏈錶結構 92
4.6.2 雙鏈錶結構 93
4.6.3 練習4.6 95
4.7 小結 95
4.8 復習題 96
4.9 編程項目 96
第5章 接口、實現和多態 98
5.1 開發接口 98
5.1.1 定義包接口 98
5.1.2 指定參數和返迴值 99
5.1.3 構造方法和實現類 101
5.1.4 先驗條件、後驗條件、
異常和文檔 101
5.1.5 用Python編寫接口 102
5.1.6 練習5.1 103
5.2 開發一個基於數組的實現 103
5.2.1 選擇並初始化數據
結構 103
5.2.2 先完成容易的方法 104
5.2.3 完成迭代器 105
5.2.4 完成使用迭代器
的方法 106
5.2.5 in運算符和__contains__
方法 106
5.2.6 完成remove方法 107
5.2.7 練習5.2 107
5.3 開發一個基於鏈錶的實現 107
5.3.1 初始化數據結構 108
5.3.2 完成迭代器 109
5.3.3 完成clear和add方法 109
5.3.4 完成remove方法 109
5.3.5 練習5.3 110
5.4 兩個包實現的運行時性能 110
5.5 測試兩個包實現 111
5.6 用UML圖錶示包資源 112
5.7 小結 113
5.8 復習題 113
5.9 編程項目 114
第6章 繼承和抽象類 115
6.1 使用繼承定製一個已有的類 115
6.1.1 已有類的子類化 115
6.1.2 再談__init__方法 116
6.1.3 添加新的contains方法 117
6.1.4 修改已有的add方法 117
6.1.5 ArraySortedBag的運行
時間性能 118
6.1.6 Python中的類層級 118
6.1.7 練習6.1 119
6.2 使用抽象類去除代碼冗餘性 119
6.2.1 設計一個
AbstractBag類 119
6.2.2 重新編寫AbstractBag
中的__init__方法 120
6.2.3 修改AbstractBag
的子類 120
6.2.4 將AbstractBag中的
__add__方法泛化 121
6.3 所有集閤的一個抽象類 122
6.3.1 將AbstractCollection
整閤到集閤層級中 122
6.3.2 在__eq__方法中使用
兩個迭代器 123
6.3.3 練習6.2 124
6.4 小結 124
6.5 復習題 124
6.6 編程項目 125
第7章 棧 127
7.1 棧概覽 127
7.2 使用棧 128
7.2.1 棧接口 128
7.2.2 初始化一個棧 129
7.2.3 示例應用程序:
匹配括號 129
7.2.4 練習7.1 131
7.3 棧的3種應用 131
7.3.1 計算算術錶達式 131
7.3.2 計算後綴錶達式 132
7.3.3 練習7.2 133
7.3.4 將中綴錶達式轉換為
後綴錶達式 133
7.3.5 練習7.3 135
7.3.6 迴溯算法 135
7.3.7 內存管理 137
7.4 棧的實現 138
7.4.1 測試驅動程序 138
7.4.2 將棧添加到集閤層級中 139
7.4.3 數組實現 140
7.4.4 鏈錶實現 141
7.4.5 AbstractStack類的
作用 144
7.4.6 兩種實現的時間和
空間分析 144
7.4.7 練習7.4 145
7.5 案例學習:計算後綴錶達式 145
7.5.1 要求 145
7.5.2 分析 145
7.5.3 設計 148
7.5.4 實現 150
7.6 小結 153
7.7 復習題 153
7.8 編程項目 154
第8章 隊列 156
8.1 隊列概覽 156
8.2 隊列接口及其應用 157
練習8.1 158
8.3 隊列的兩個應用 159
8.3.1 模擬 159
8.3.2 輪詢CPU調度 161
8.3.3 練習8.2 161
8.4 隊列的實現 161
8.4.1 隊列的鏈錶實現 161
8.4.2 數組實現 163
8.4.3 兩種實現的時間和
空間復雜度分析 164
8.4.4 練習8.3 165
8.5 案例學習:模擬超市排隊
結賬 165
8.5.1 要求 165
8.5.2 分析 165
8.5.3 用戶界麵 166
8.5.4 類及其作用 166
8.6 優先隊列 171
練習8.4 175
8.7 案例學習:急癥室調度 175
8.7.1 需求 175
8.7.2 分析 175
8.7.3 類 176
8.7.4 設計和實現 177
8.8 小結 179
8.9 復習題 179
8.10 編程項目 180
第9章 列錶 182
9.1 概覽 182
9.2 使用列錶 183
9.2.1 基於索引的操作 183
9.2.2 基於內容的操作 183
9.2.3 基於位置的操作 184
9.2.4 列錶的接口 187
9.2.5 練習9.1 188
9.3 列錶的應用 188
9.3.1 堆存儲管理 188
9.3.2 組織磁盤上的文件 189
9.3.3 其他集閤的實現 190
9.4 列錶實現 191
9.4.1 AbstractList類的角色 191
9.4.2 基於數組的實現 192
9.4.3 鏈錶實現 194
9.4.4 兩種實現的時間和
空間分析 196
9.4.5 練習9.2 197
9.5 實現列錶迭代器 197
9.5.1 列錶迭代器的角色
和作用 197
9.5.2 設置和實例化一個
列錶迭代器類 198
9.5.3 列錶迭代器中的導
航方法 199
9.5.4 列錶迭代器中的修
改器方法 200
9.5.5 鏈錶列錶的列錶迭
代器的設計 201
9.5.6 列錶迭代器實現的
時間和空間分析 201
9.6 案例學習:開發一個有序
的列錶 201
9.6.1 要求 201
9.6.2 分析 202
9.6.3 設計 202
9.6.4 實現(代碼) 204
9.7 小結 205
9.8 復習題 205
9.9 編程項目 206
第10章 樹 208
10.1 樹的概覽 208
10.1.1 樹的術語 208
10.1.2 普通的樹和二叉樹 209
10.1.3 樹的遞歸定義 210
10.1.4 練習10.1 210
10.2 為什麼要使用樹 210
10.3 二叉樹的形狀 211
練習10.2 213
10.4 二叉樹的3種常見應用 213
10.4.1 堆 213
10.4.2 二叉搜索樹 214
10.4.3 錶達式樹 215
10.4.4 練習10.3 216
10.5 二叉樹的遍曆 216
10.5.1 前序遍曆 216
10.5.2 中序遍曆 217
10.5.3 後序遍曆 217
10.5.4 層序遍曆 217
10.6 開發二叉搜索樹 217
10.6.1 二叉搜索樹接口 218
10.6.2 鏈錶實現的數據結構 219
10.6.3 二叉搜索樹的復雜度
分析 223
10.6.4 練習10.4 224
10.7 遞歸的後代解析和編程語言 224
10.7.1 語法簡介 224
10.7.2 在語言中識彆、解析
和解釋句子 226
10.7.3 詞法分析和掃描器 226
10.7.4 解析策略 227
10.8 案例學習:解析和錶達式樹 227
10.8.1 要求 227
10.8.2 分析 228
10.8.3 節點類的設計和實現 228
10.8.4 解析器類的設計和
實現 230
10.9 二叉樹的數組實現 231
練習10.5 232
10.10 實現堆 232
練習10.6 234
10.11 小結 234
10.12 復習題 235
10.13 編程項目 236
第11章 集和字典 238
11.1 使用集 238
11.2 Python的set類 239
11.2.1 集的一個示例會話 239
11.2.2 集的應用 240
11.2.3 集和包的關係 240
11.2.4 集和字典的關係 240
11.2.5 集的實現 240
11.2.6 練習11.1 241
11.3 集的基於數組和鏈錶的實現 241
11.3.1 AbstractSet類 241
數據結構 Python語言描述 下載 mobi epub pdf txt 電子書 格式
評分
☆☆☆☆☆
這兩本書是上網查瞭很久網上的推薦以後選齣來的。
評分
☆☆☆☆☆
而這本《Python基礎教程(第3版)》裏,講到瞭我所需要的進階的知識,還有十個項目可以練手!可以以此作為過渡——因為學習初期,我就已經把《Python高級編程(第2版)》買好瞭(●°u°●)? 」
評分
☆☆☆☆☆
配送等各方麵都是做的非常好的。送貨及時,配送員也非
評分
☆☆☆☆☆
這兩本書是上網查瞭很久網上的推薦以後選齣來的。
評分
☆☆☆☆☆
讓我感到驚喜的是,這兩本書的書簽一樣的而且《從入門到實踐》裏邊的標簽整好推薦的是《基礎教程》。
評分
☆☆☆☆☆
書的質量不錯。書的質量不錯。書的質量不錯。書的質量不錯。書的質量不錯。書的質量不錯。書的質量不錯。書的質量不錯。
評分
☆☆☆☆☆
這本書纔是最適閤入門的,對比Python基礎教程,這本講得更詳細,更容易上手。
評分
☆☆☆☆☆
怎麼說,這就很舒服!
評分
☆☆☆☆☆
包裝特彆好,沒有一絲損壞,就不單個上圖瞭。