C++語言程序設(shè)計(進(jìn)階篇)(英文版·原書第5版) [美]梁勇
定 價:99 元
- 作者:[美]梁勇
- 出版時間:2025/3/1
- ISBN:9787111774822
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8C++
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是關(guān)于C++程序設(shè)計的經(jīng)典教材,分為基礎(chǔ)篇和進(jìn)階篇,主要介紹程序設(shè)計基礎(chǔ)、面向?qū)ο蟪绦蛟O(shè)計和數(shù)據(jù)結(jié)構(gòu)。本書采用“基礎(chǔ)優(yōu)先,問題驅(qū)動”的教學(xué)方式,在設(shè)計自定義類之前介紹基本的編程概念和技術(shù),同時側(cè)重于解決問題而非語法,通過不同領(lǐng)域的示例說明相關(guān)概念。本書引導(dǎo)讀者循序漸進(jìn)地學(xué)習(xí),從基本的編程技術(shù)到面向?qū)ο缶幊蹋瑥暮唵蔚臄?shù)據(jù)類型到經(jīng)典的結(jié)構(gòu),為讀者構(gòu)建了友好的學(xué)習(xí)曲線。本書可作為高等院校計算機(jī)相關(guān)專業(yè)程序設(shè)計課程的教材,也可作為C++語言及編程愛好者的參考書。
·在設(shè)計自定義類之前介紹基本的編程概念和技術(shù),同時側(cè)重于解決問題,使用了數(shù)學(xué)、科學(xué)、商業(yè)、金融、游戲等許多不同領(lǐng)域的示例。 ·CodeAnimation和LiveExample引導(dǎo)讀者逐行閱讀代碼,通過填寫缺失的代碼,讀者能夠在實時編碼環(huán)境中得到實時反饋,有助于在實踐中鞏固所學(xué)。 ·算法動畫、交互式流程圖和UML圖向讀者展示算法的每個步驟,以可視化和交互方式展示算法如何工作。 ·新版反映了近期的編程趨勢,比如云存儲和觸摸屏,而且所有的代碼都兼容C++17。
前 言
Introduction to C++ Programming and Data Structures, Fifth Edition
教學(xué)特色
每章的開頭列出學(xué)習(xí)目標(biāo),明確學(xué)生應(yīng)該從這一章中學(xué)到什么。這份簡潔的列表有助于學(xué)生在完成學(xué)習(xí)后,判斷自己是否達(dá)到了學(xué)習(xí)目標(biāo)。
要點提示強(qiáng)調(diào)了每節(jié)中所涵蓋的重要概念。
CodeAnimation模擬程序的執(zhí)行,它引導(dǎo)學(xué)生逐行瀏覽代碼、要求學(xué)生提供輸入并立即展示這些輸入對程序產(chǎn)生的影響。
LiveExample讓學(xué)生能夠在類似于IDE的環(huán)境中練習(xí)編碼。給學(xué)生提供填寫缺失代碼的機(jī)會要求他們編譯和運(yùn)行程序,提交內(nèi)容后能立即獲得反饋。LiveExample引導(dǎo)學(xué)生逐步接近正確答案,幫助他們堅持下去,并保持不斷嘗試的動力。
交互式流程圖、算法動畫和UML圖可以提升解決問題和邏輯思維的能力,有助于理解操作流程,并在學(xué)生開始編碼之前幫助他們可視化程序中正在發(fā)生的事情。
本版新增內(nèi)容
本版在細(xì)節(jié)上進(jìn)行了全面修訂,旨在改善清晰度、呈現(xiàn)方式、內(nèi)容、示例和練習(xí)。主要的改進(jìn)包括:
更新1.2節(jié),包括云存儲和觸摸屏的內(nèi)容。
更新4.8.4節(jié),討論基于元組的輸入與基于行的輸入。
在C++17中不再支持異常說明符。因此,在第5版中刪除了第4版的16.8節(jié)。對所有使用異常說明符的代碼都進(jìn)行了修訂。
18.11節(jié)是全新的。它介紹了三種字符串匹配算法:暴力法、Boyer-Moore算法和KMP算法。
21.11節(jié)也是全新的。它介紹了使用霍夫曼編碼進(jìn)行數(shù)據(jù)壓縮的方法。
附錄I是全新的。它給出了大O、大Omega和大Theta表示法的精確數(shù)學(xué)定義。
靈活的章節(jié)順序
可采用靈活的章節(jié)順序閱讀本版,如下圖所示。
補(bǔ)充說明
由于影印版未獲得英文版Revel版本(互動式數(shù)字教材)的授權(quán),因此大量視頻和動畫內(nèi)容無法通過紙質(zhì)版本有效呈現(xiàn)。我們在書中提供了互動內(nèi)容的訪問地址,讀者可通過以下二維碼獲得完整的互動內(nèi)容鏈接列表。
梁勇(Y. Daniel Liang) 佐治亞南方大學(xué)計算機(jī)科學(xué)榮休教授。之前曾是普渡大學(xué)計算機(jī)科學(xué)系副教授,并曾兩次獲得普渡大學(xué)卓越研究獎。他撰寫了30多本著作,其中程序設(shè)計類教材在世界各地得到廣泛使用。
目 錄
Introduction to C++ Programming and Data Structures, Fifth Edition
第17章 遞歸 1
17.1 簡介 1
17.2 案例研究:計算階乘 2
17.3 案例研究:斐波那契數(shù) 8
17.4 使用遞歸解決問題 12
17.5 遞歸輔助函數(shù) 16
17.5.1 選擇排序 18
17.5.2 二分查找 20
17.6 漢諾塔 22
17.7 八皇后問題 26
17.8 遞歸與迭代 30
17.9 尾遞歸 31
關(guān)鍵術(shù)語 34
章節(jié)總結(jié) 35
編程練習(xí) 35
第18章 開發(fā)高效算法 46
18.1 簡介 47
18.2 使用大O表示法衡量算法效率 47
18.3 示例:確定大O 50
18.4 分析算法時間復(fù)雜度 56
18.4.1 分析二分查找 56
18.4.2 分析選擇排序 57
18.4.3 分析漢諾塔問題 58
18.4.4 常見的遞歸關(guān)系 59
18.4.5 比較常見的增長函數(shù) 59
18.5 使用動態(tài)規(guī)劃求斐波那契數(shù) 63
18.6 使用歐幾里得算法求最大
公約數(shù) 66
18.7 尋找質(zhì)數(shù)的高效算法 72
18.8 使用分治法尋找最近點對 81
18.9 使用回溯法解決八皇后問題 84
18.10 案例研究:尋找凸包 88
18.10.1 禮品包裝算法 89
18.10.2 Graham算法 90
18.11 字符串匹配 92
18.11.1 Boyer-Moore算法 95
18.11.2 Knuth-Morris-Pratt算法 98
關(guān)鍵術(shù)語 102
章節(jié)總結(jié) 103
編程練習(xí) 104
第19章 排序 111
19.1 簡介 111
19.2 插入排序 112
19.3 冒泡排序 115
19.4 歸并排序 117
19.5 快速排序 123
19.6 堆排序 127
19.6.1 存儲堆 129
19.6.2 添加新節(jié)點 130
19.6.3 刪除根 131
19.6.4 Heap類 134
19.6.5 使用Heap類進(jìn)行排序 137
19.6.6 堆排序的時間復(fù)雜度 139
19.7 桶排序和基數(shù)排序 140
19.8 外部排序 143
19.8.1 實現(xiàn)第一階段 145
19.8.2 實現(xiàn)第二階段 146
19.8.3 合成兩個階段 149
19.8.4 外部排序復(fù)雜度 150
關(guān)鍵術(shù)語 151
章節(jié)總結(jié) 151
編程練習(xí) 151
第20章 鏈表、隊列和優(yōu)先級隊列 154
20.1 簡介 154
20.2 節(jié)點 155
20.3 LinkedList類 159
20.4 實現(xiàn)LinkedList 163
20.4.1 實現(xiàn)addFirst
(T element) 164
20.4.2 實現(xiàn)addLast
(T element) 165
20.4.3 實現(xiàn)add(int index,
T element) 166
20.4.4 實現(xiàn)removeFirst() 168
20.4.5 實現(xiàn)removeLast() 170
20.4.6 實現(xiàn)removeAt
(int index) 171
20.4.7 LinkedList的源代碼 173
20.4.8 LinkedList的時間
復(fù)雜度 175
20.5 迭代器 179
20.6 C++11 foreach循環(huán) 184
20.7 鏈表的變體 186
20.8 隊列 189
20.9 優(yōu)先級隊列 192
關(guān)鍵術(shù)語 196
章節(jié)總結(jié) 196
編程練習(xí) 197
第21章 二叉查找樹 200
21.1 簡介 200
21.2 二叉查找樹基礎(chǔ)知識 201
21.3 表示二叉查找樹 202
21.4 訪問二叉查找樹中的節(jié)點 204
21.5 查找元素 204
21.6 將元素插入二叉查找樹 206
21.7 樹的遍歷 208
21.8 BST類 210
21.9 刪除二叉查找樹中的元素 216
21.10 BST的迭代器 224
21.11 案例研究:數(shù)據(jù)壓縮 227
關(guān)鍵術(shù)語 232
章節(jié)總結(jié) 233
編程練習(xí) 233
第22章 STL容器 236
22.1 簡介 236
22.2 STL基礎(chǔ) 237
22.3 STL迭代器 243
22.3.1 迭代器的類型 245
22.3.2 迭代器運(yùn)算符 246
22.3.3 預(yù)定義迭代器 248
22.3.4 istream_iterator和ostream_iterator 250
22.4 C++11自動類型推斷 252
22.5 序列容器 253
22.5.1 序列容器:vector 254
22.5.2 序列容器:deque 257
22.5.3 序列容器:list 259
22.6 關(guān)聯(lián)容器 263
22.6.1 關(guān)聯(lián)容器:set和
multiset 263
22.6.2 關(guān)聯(lián)容器:map和
multimap 265
22.7 容器適配器 269
22.7.1 容器適配器:stack 269
22.7.2 容器適配器:queue 270
22.7.3 容器適配器:priority_
queue 272
關(guān)鍵術(shù)語 274
章節(jié)總結(jié) 275
編程練習(xí) 276
第23章 STL算法 280
23.1 簡介 281
23.2 算法類型 282
23.3 copy函數(shù) 284
23.4 fill和fill_n 287
23.5 將函數(shù)作為參數(shù)傳遞 289
23.6 generate和generate_n 293
23.7 remove、remove_if、
remove_copy和
remove_copy_if 295
23.8 replace、replace_if、replace_copy和
replace_copy_if 299
23.9 find、find_if、find_end和
find_first_of 303
23.10 search和search_n 309<