《基於MFC的可視化數據結構》是2014年清華大學出版社出版的圖書,作者是連遠鋒、李國和、張秀美、趙旭霞、吳雙元等。
基本介紹
- 書名:基於MFC的可視化數據結構
- 作者:連遠鋒、李國和、張秀美、趙旭霞、吳雙元
- ISBN:978-7-302-36947-9
- 類別:C語言-程式設計-高等教育-教材
- 頁數:453
- 定價:49
- 出版社:清華大學出版社
- 出版時間:2014年9月
- 裝幀:平裝
- 開本:185*260
圖書簡介,圖書目錄,
圖書簡介
本書首先簡要介紹MFC程式設計的基礎知識,然後系統地介紹線性表、棧與佇列、樹與二叉樹以及圖等數據結構,闡述了各種數據結構的邏輯關係、存儲表示,並採用面向對象語言Visual C++的MFC平台,詳細闡述可視化線性結構、可視化樹結構、可視化圖結構和可視化排序的設計思想和實現方法,使讀者循序漸進地理解數據抽象、面向對象思想和可視化程式設計等現代化軟體設計風格,理解並掌握數據結構知識體系,提高套用Visual C++解決實際問題的能力。
圖書目錄
第1章 認識Visual C++/
1.1VisualC++概述1
1.1.1Visual C++簡介及發展歷程1
1.1.2Visual C++優勢1
1.2代碼編輯器使用技巧2
1.2.1檢測代碼中的括弧是否匹配2
1.2.2代碼對齊2
1.2.3顯示函式參數2
1.2.4完全取詞功能不可用2
1.2.5快速刪除項目下Debug資料夾中的臨時檔案2
1.2.6如何徹底地從工程中刪除一個類3
1.2.7從其他檔案中抓取資源3
1.2.8Visual C++中命名規則3
1.2.9Workspace和Project之間的關係3
1.2.10在編輯狀態下發現成員變數或函式不能顯示提示
時如何打開顯示功能3
1.2.11如何清楚所有的斷點4
1.2.12如何添加Lib檔案到當前工程4
1.3Visual C++調試技術4
1.3.1調試環境的建立5
1.3.2調試的一般過程6
1.3.3如何設定斷點7
1.3.4控制程式運行11
1.3.5查看工具的使用12
1.4高級調試技術15
1.4.1TRACE宏15
1.4.2ASSERT宏16
1.4.3ASSERT_VALID宏16
1.4.4VERIFY宏16
1.4.5對象的Dump函式的利用17[1]基於MFC的可視化數據結構目錄[3][3]1.4.6檢查記憶體泄露問題17
1.4.7MFC跟蹤19
第2章MFC編程基礎
2.1MFC簡介21
2.2MFC的常用類21
2.2.1字元串類21
2.2.2MFC的集合類27
2.2.3系統日期、時間類34
2.2.4定時器38
2.3設備環境41
2.3.1設備環境概念41
2.3.2設備環境類42
2.3.3圖形設備模式43
2.4基本繪圖工具43
2.4.1畫筆44
2.4.2CPen類44
2.4.3畫刷45
2.4.4CBrush類45
2.4.5圖形繪製45
2.5文本字型50
2.5.1文本輸出50
2.5.2字型52
2.5.3字型對話框54
2.6多執行緒55
2.6.1多執行緒概述55
2.6.2Win32多執行緒編程55
2.6.3MFC對多執行緒編程的支持58
2.6.4執行緒間通信59
2.6.5臨界區61
2.6.6互斥量61
2.6.7信號量63
第3章框架與視窗
3.1MFC框架結構65
3.2視窗分割67
3.2.1靜態分割和動態分割67
3.2.2CSplitterWnd類68
3.2.3分割視窗中的通信機制71
3.3MFC控制項73
3.3.1靜態文本控制項73
3.3.2編輯框控制項74
3.3.3按鈕控制項75
3.3.4列表框控制項76
3.3.5組合框控制項77
3.3.6列表視圖控制項78
3.3.7樹視圖控制項81
3.4可視化數據結構分割視窗實例87
3.4.1基本分割視圖實現87
3.4.2樹視圖控制項的位置和大小控制105
3.4.3樹視圖控制項添加結點109
3.4.4樹視圖控制項添加訊息112
第4章可視化線性結構
4.1線性表定義及特點116
4.1.1線性表的定義116
4.1.2線性表的特點116
4.2線性表的抽象數據類型117
4.3線性表順序存儲結構118
4.3.1順序表的定義118
4.3.2順序表的特點 118
4.4線性表鏈式存儲結構119
4.4.1單鍊表的類定義119
4.4.2單鍊表基本操作實現120
4.5雙向鍊表124
4.6棧125
4.6.1棧的定義及基本操作125
4.6.2順序棧126
4.6.3鏈式棧129
4.7佇列131
4.7.1佇列的定義及基本操作131
4.7.2順序佇列132
4.7.3循環佇列134
4.7.4鏈式佇列137
4.7.5雙端佇列139
4.8單鍊表的可視化實現142
4.8.1單鍊表類的創建142
4.8.2可視化鍊表基礎功能146
4.8.3鍊表添加結點功能157
4.8.4鍊表插入結點功能158
4.8.5鍊表刪除結點功能160
4.8.6鍊表結點查找功能162
4.9循環佇列的可視化實現164
4.9.1循環佇列類的創建164
4.9.2可視化循環佇列基礎功能169
4.9.3循環佇列入隊功能176
4.9.4循環佇列出隊功能178
4.10雙端佇列的可視化實現178
4.10.1雙端佇列類的創建178
4.10.2可視化雙端佇列基礎功能180
4.10.3雙端佇列前端入隊功能188
4.10.4雙端佇列前端出隊功能189
4.10.5雙端佇列尾端入隊功能189
4.10.6雙端佇列尾端出隊功能190
第5章可視化樹結構
5.1樹的基本概念和術語191
5.1.1樹的基本概念191
5.1.2樹的基本術語192
5.2樹的抽象數據類型192
5.3樹的存儲結構193
5.3.1雙親表示法194
5.3.2孩子表示法194
5.3.3孩子兄弟表示法195
5.4二叉樹196
5.4.1定義及主要特性196
5.4.2二叉樹的存儲結構198
5.5二叉樹的遍歷202
5.5.1二叉樹遍歷的遞歸算法202
5.5.2二叉樹遍歷的非遞歸算法204
5.6線索二叉樹208
5.6.1中序線索二叉樹的建立和遍歷211
5.6.2先序與後序線索二叉樹211
5.6.3由遍歷序列恢復二叉樹212
5.7二叉排序樹213
5.7.1二叉排序的插入操作213
5.7.2二叉排序的刪除操作215
5.8平衡二叉樹215
5.8.1平衡二叉樹插入操作216
5.8.2平衡二叉樹的刪除操作222
5.9哈夫曼樹226
5.9.1基本概念226
5.9.2哈夫曼算法227
5.9.3哈夫曼編碼227
5.10堆230
5.11B樹的概念233
5.11.1B樹上的查找234
5.11.2B樹上的插入236
5.11.3B樹上的刪除236
5.12B+樹的概念 240
5.12.1B+樹的定義240
5.12.2B+樹上的查找240
5.12.3B+樹上的插入241
5.12.4B+樹上的刪除241
5.13二叉排序樹的可視化實現241
5.13.1二叉排序樹類的創建241
5.13.2可視化二叉排序樹基礎功能250
5.13.3二叉排序樹添加結點功能257
5.13.4二叉排序樹刪除結點功能258
5.13.5二叉排序樹查找結點功能259
5.13.6二叉排序樹可視化實現結果260
5.14平衡二叉樹的可視化實現261
5.14.1平衡二叉樹類的創建261
5.14.2可視化平衡二叉樹基礎功能274
5.14.3平衡二叉樹添加結點功能280
5.14.4平衡二叉樹刪除結點功能281
5.14.5平衡二叉樹查找結點功能282
5.14.6平衡二叉樹可視化實現結果283
5.15B樹的可視化實現284
5.15.1B樹類的創建284
5.15.2可視化B樹基礎功能302
5.15.3B樹設定階數功能309
5.15.4B樹添加結點功能310
5.15.5B樹刪除結點功能311
5.15.6B樹查找結點功能312
5.15.7B樹清空結點功能313
5.15.8B樹可視化實現結果313
第6章可視化圖結構
6.1圖的基本概念和術語315
6.2圖的抽象數據類型317
6.3圖的存儲結構318
6.3.1鄰接矩陣 318
6.3.2鄰接表 319
6.3.3有向圖十字鍊表表示320
6.3.4無向圖鄰接多重表表示321
6.4圖的遍歷323
6.4.1深度優先遍歷323
6.4.2廣度優先遍歷324
6.5最小生成樹325
6.5.1Prim算法326
6.5.2Kruskal算法326
6.6拓撲排序329
6.7關鍵路徑331
6.8最短路徑333
6.8.1Dijkstra算法333
6.8.2Floyd算法335
6.9可視化圖基礎功能335
6.9.1可視化圖工具列335
6.9.2打開圖功能342
6.9.3保存圖功能342
6.9.4清空圖功能342
6.9.5新增頂點功能343
6.9.6刪除頂點功能343
6.9.7頂點信息功能344
6.9.8新增邊功能345
6.9.9刪除邊功能345
6.9.10設定權值功能346
6.10無向圖深度優先遍歷可視化實現349
6.10.1可視化無向圖類349
6.10.2可視化無向圖深度優先遍歷基礎功能362
6.10.3無向圖深度優先遍歷執行功能382
6.10.4無向圖深度優先遍歷下個結點功能383
6.10.5無向圖深度優先遍歷可視化實現結果383
6.11有向圖Dijkstra算法可視化實現384
6.11.1可視化有向圖類384
6.11.2可視化有向圖單源最短路徑Dijkstra算法基礎功能400
6.11.3有向圖Dijkstra算法執行功能418
6.11.4有向圖Dijkstra可視化實現結果419
第7章可視化排序
7.1排序的基本概念和術語420
7.2插入排序421
7.2.1直接插入排序421
7.2.2希爾排序422
7.3交換排序423
7.3.1冒泡排序 423
7.3.2快速排序424
7.4選擇排序426
7.5歸併排序427
7.6排序可視化實現428
7.6.1可視化排序類428
7.6.2可視化排序基礎功能439
7.6.3手動輸入數據功能449
7.6.4隨機輸入數據功能450
7.6.5清空數據功能450
7.6.6開始排序功能451
7.6.7暫停排序功能451
7.6.8結束排序功能452
7.6.9排序可視化實現結果452
第1章概述/1
§1.1C++語言的發展簡況及其特點1
1.1.1C++語言的發展簡況1
1.1.2C++語言的特點2
§1.2C++語言程式組成及其結構3
§1.3關鍵字和標識符5
1.3.1關鍵字6
1.3.2標識符6
§1.4幾個特殊的C++語句6
1.4.1空語句6
1.4.2複合語句7
1.4.3注釋語句7
§1.5簡單的輸入輸出8
1.5.1格式化輸入輸出函式8
1.5.2I/O流13
§1.6數制與編碼15
1.6.1二進制、八進制和十六進制16
1.6.2二進制、八進制、十六進制和十進制之間的轉換16
1.6.3原碼、反碼和補碼20
1.6.4編碼21
思考與練習題22
第2章數據與運算/25
§2.1基本數據類型25
2.1.1類型bool25
2.1.2類型char26
2.1.3類型short26
2.1.4類型int27
2.1.5類型long27
2.1.6浮點類型27〖1〗C++程式設計基礎目錄[3]〖3〗§2.2常量28
2.2.1整型常量28
2.2.2浮點常量28
2.2.3字元常量30
2.2.4字元串常量30
2.2.5標識常量32
2.2.6換碼序列32
§2.3變數34
2.3.1變數和變數的地址34
2.3.2C++存儲類型35
2.3.3變數使用範圍37
2.3.4變數的初始化和賦值38
2.3.5強制數據類型的轉換38
2.3.6常量化的變數40
§2.4數組41
2.4.1一維數據41
2.4.2字元數組44
2.4.3多維數組46
§2.5運算符及其運算48
2.5.1算術運算符48
2.5.2關係運算符和邏輯運算符50
2.5.3位運算符52
2.5.4賦值運算符與賦值複合運算符58
2.5.5C++語言的特殊運算符59
2.5.6C++運算符的優先權61
思考與練習題62
第3章控制語句/64
§3.1程式設計方法與程式結構64
3.1.1結構化程式設計65
3.1.2面向對象的程式設計67
§3.2分支語句67
3.2.1單分支語句——if語句68
3.2.2雙分支語句——if~else語句69
3.2.3多分支語句——elseif語句70
3.2.4嵌套結構及其分析73
3.2.5switch語句76
§3.3循環語句79
3.3.1for循環語句79
3.3.2while循環語句82
3.3.3do~while循環語句84
3.3.4循環語句使用的注意事項86
3.3.5循環語句的嵌套87
§3.4輔助控制語句88
3.4.1break語句——中途退出語句88
3.4.2continue語句——截流語句92
3.4.3return語句93
3.4.4goto語句95
思考與練習題96
第4章指針/101
§4.1指針變數101
§4.2指針變數的聲明與初始化104
4.2.1指針變數的聲明104
4.2.2指針的初始化105
§4.3指針運算107
4.3.1指針的算術運算107
4.3.2指針的關係運算111
4.3.3指針的賦值運算112
§4.4指針與數組113
§4.5字元指針與字元串115
§4.6指針數組117
§4.7多級指針119
§4.8new和delete運算符121
4.8.1new運算符121
4.8.2delete運算符123
§4.9引用124
4.9.1普通變數的引用124
4.9.2數組的引用124
§4.10const型指針和void型指針125
4.10.1常量化的指針變數126
4.10.2void型指針變數128
思考與練習題128
第5章函式與宏/130
§5.1自定義函式的定義、聲明和使用130
5.1.1函式的定義130
5.1.2函式的聲明132
5.1.3函式的使用133
§5.2函式之間的參數傳遞135
5.2.1複製傳遞方式135
5.2.2地址傳遞方式136
5.2.3引用方式137
5.2.4全局變數138
5.2.5默認參數值的函式139
§5.3函式與數組140
5.3.1複製傳遞方式140
5.3.2地址傳遞方式141
5.3.3引用方式142
5.3.4多維數組與函式143
§5.4指針函式146
§5.5函式指針與函式指針數組147
5.5.1函式指針147
5.5.2函式指針數組149
§5.6函式重載150
§5.7內聯函式152
§5.8遞歸函式152
§5.9標準函式153
§5.10宏和其他預編譯語句156
5.10.1宏定義語句#define156
5.10.2包括語句158
5.10.3條件編譯158
思考與練習題159
第6章自定義數據類型/167
§6.1結構體的定義及其聲明167
6.1.1結構體的定義167
6.1.2結構體的聲明168
6.1.3結構體的使用169
6.1.4結構體的初始化170
6.1.5匿名結構體171
§6.2結構體數組與結構體指針171
6.2.1結構體數組171
6.2.2結構體指針172
§6.3結構體與函式174
6.3.1結構體在函式體間的傳遞174
6.3.2結構體函式177
6.3.3結構體指針函式179
§6.4結構體嵌套180
§6.5位欄位結構體簡介182
§6.6聯合體184
§6.7枚舉類型188
6.7.1枚舉類型的定義188
6.7.2枚舉變數的聲明與使用188
§6.8typedef語句190
思考與練習題192
第7章類與對象/195
§7.1面向對象技術與C++類類型195
7.1.1傳統開發方法存在的問題195
7.1.2面向對象技術196
7.1.3C++語言的三種類類型197
7.1.4class類類型198
§7.2類的定義199
§7.3對象的聲明和使用202
§7.4對象數組和對象指針204
7.4.1對象數組204
7.4.2對象指針205
§7.5構造函式和析構函式207
7.5.1構造函式207
7.5.2析構函式208
7.5.3默認構造函式和默認析構函式209
7.5.4複製構造函式209
7.5.5淺複製和深複製211
§7.6對象在函式間的傳遞214
7.6.1對象的複製傳遞方式214
7.6.2對象的地址傳遞方式215
7.6.3對象的引用方式217
§7.7this指針217
§7.8常對象與常成員函式218
7.8.1常對象218
7.8.2常成員函式219
思考與練習題220
第8章派生與繼承/222
§8.1類的程式結構222
§8.2基類與派生類223
8.2.1派生類的定義223
8.2.2派生類的繼承方式226
8.2.3基類與派生類之間的關係228
8.2.4基類指針與派生類指針228
§8.3單繼承、多繼承與繼承鏈228
§8.4派生類與基類之間的內在關係233
8.4.1派生類的構造函式和析構函式234
8.4.2構造函式和析構函式的執行順序235
8.4.3子類型238
8.4.4類型適應239
8.4.5對象的記憶體占用情況239
§8.5二義性與虛基類241
8.5.1二義性問題241
8.5.2虛基類244
8.5.3虛基類的構造函式246
§8.6類層次中的訪問規則246
思考與練習題247
第9章友元與靜態成員/249
§9.1友元249
9.1.1友元函式249
9.1.2友元類251
§9.2靜態成員252
9.2.1靜態數據成員252
9.2.2靜態成員函式255
思考與練習題257
第10章虛擬函式與多態性/259
§10.1靜態綁定和動態綁定259
10.1.1靜態綁定259
10.1.2動態綁定261
§10.2虛擬函式261
10.2.1虛擬函式的技術內幕264
10.2.3虛擬函式的套用舉例265
10.2.3虛析構函式269
§10.3純虛擬函式與抽象類270
10.3.1純虛擬函式270
10.3.2抽象類271
思考與練習題276
第11章重載與模板/279
§11.1重載279
11.1.1運算符重載279
11.1.2類型轉換284
11.1.3特殊運算符的重載285
§11.2模板290
11.2.1函式模板291
11.2.2類模板293
11.2.3模板與友元298
11.2.4模板與static成員300
11.2.5類模板的派生與繼承300
思考與練習題300
第12章異常處理/303
§12.1異常的概念303
12.1.1異常的定義303
12.1.2異常處理的基本思想303
§12.2異常處理的編程方法304
12.2.1異常處理的三個語句304
12.2.2異常處理的執行過程305
12.2.3異常處理的基本步驟305
12.2.4多類型的異常處理306
12.2.5再拋出異常308
12.2.6構造函式、析構函式與異常處理309
§12.3異常處理類309
思考與練習題310
第13章C++輸入和輸出/312
§13.1流輸入輸出312
13.1.1提取運算符和插入運算符312
13.1.2標準出錯輸出(cerr/clog)315
13.1.3輸入流類315
13.1.4輸出流類316
13.1.5格式化輸入輸出317
§13.2磁碟檔案的輸入輸出324
13.2.1文本檔案的輸入輸出324
13.2.2二進制數據檔案328
13.2.3隨機數據檔案329
思考與練習題331
參考文獻/332