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