前言
第1篇 程序設計基礎及數據結構基礎
第1章 數組
1.1 一維數組的聲明與字符數組
1.1.1 一維數組的聲明與初始化
1.1.2 C風格字符串與字符數組
1.2 二維數組
1.2.1 二維數組的聲明與初始化
1.2.2 行優(yōu)先存儲與列優(yōu)先存儲
1.2.3 二維數組的動態(tài)聲明
1.3 數組指針、指針數組與數組名的指針操作
1.3.1 指針運算--算術運算、關系運算
1.3.2 指針數組與數組指針
1.3.3 指針運算在數組中的應用
1.4 數組的應用
1.4.1 線性表的順序存儲
1.4.2 對稱矩陣的壓縮
本章習題
第2章 字符串
2.1 字符串與子串、子序列
2.2 C風格字符串
2.3 標準庫提供的字符串處理函數
2.3.1 strlen
2.3.2 strcmp
2.3.3 strcat與strcpy
2.3.4 memcpy與memset
2.4 字符串的實際應用
2.4.1 字符串包含問題
2.4.2 字符串轉換為數字
2.4.3 其他應用
本章習題
第3章 結構體、共用體與枚舉
3.1 結構體struct
3.1.1 結構體的定義
3.1.2 結構體中的位字段
3.2 共用體union
3.3 枚舉
3.4 sizeof運算符
3.4.1 sizeof的使用方法
3.4.2 sizeof的結果
3.4.3 與strlen比較
3.4.4 指針、引用、漢字及數組的sizeof操作
3.4.5 struct的空間計算
3.4.6 union的空間計算
3.4.7 枚舉的空間計算
本章習題
第4章 運算符及其優(yōu)先級
4.1 賦值語句
4.2 自增與自減運算符
4.2.1 前綴運算與后綴運算
4.2.2 自增、自減運算符作用的對象
4.2.3 ++、--運算符的結合方向
4.3 關系與邏輯運算符
4.4 位運算符
4.4.1 與、或、非及異或運算符
4.4.2 移位運算符
4.5 C++基本類型的類型轉換
4.5.1 賦值轉換
4.5.2 表達式的轉換
4.5.3 顯式轉換
4.5.4 其他轉換
4.6 運算符優(yōu)先級表
本章習題
第5章 C預處理器、作用域、static、
const以及內存管理
5.1 C預處理器
5.1.1 宏定義與宏替換
5.1.2 文件包含
5.1.3 條件編譯
5.2 全局變量與局部變量
5.3 static
5.3.1 static的作用
5.3.2 類中static的作用
5.4 const
5.4.1 常量
5.4.2 指針和const修飾符
5.4.3 修飾函數參數與返回值
5.4.4 const在類中的應用
5.5 內存管理與釋放
5.5.1 C語言內存操作函數
5.5.2 C++內存管理
本章習題
第6章 函數
6.1 參數傳遞
6.2 內聯(lián)函數
6.3 默認參數
6.4 函數重載
6.5 函數模版與泛型
6.5.1 函數模版
6.5.2 類模版
6.6 函數的遞歸
本章習題
第7章 指針與引用
7.1 指針
7.1.1 指針的聲明
7.1.2 typedef
7.1.3 void* 指針
7.1.4 指向指針的指針
7.1.5 函數指針
7.2 引用
7.2.1 const引用
7.2.2 引用做類的數據成員
本章習題
第8章 類
8.1 訪問標號
8.2 類成員簡介
8.2.1 成員函數
8.2.2 構造函數
8.2.3 析構函數
8.2.4 構造函數與析構函數調用順序
8.2.5 操作符重載
8.3 成員函數的重載、覆蓋與隱藏
8.3.1 成員函數的重載
8.3.2 成員函數的覆蓋
8.3.3 成員函數的隱藏
本章習題
第9章 面向對象編程
9.1 繼承
9.1.1 基類成員在派生類中的訪問屬性
9.1.2 繼承時導致的二義性
9.1.3 轉換構造函數
9.1.4 類型轉換函數
9.2 虛函數多態(tài)
9.2.1 靜態(tài)聯(lián)編與動態(tài)聯(lián)編
9.2.2 虛函數表指針(vptr)及虛基類表指針(bptr)
9.2.3 虛擬繼承時構造函數的書寫
9.2.4 純虛函數
9.3 動態(tài)運行時類型識別與顯式轉換
9.3.1 typeid
9.3.2 顯式轉換
本章習題
第10章 分治法、動態(tài)規(guī)劃與貪心算法
10.1 分治法
10.2 動態(tài)規(guī)劃
10.2.1 LCS問題
10.3 貪心算法
10.3.1 貪心算法與動態(tài)規(guī)劃
本章習題
第11章 鏈表
11.1 單鏈表
11.2 快慢指針的概念及其應用
11.3 雙鏈表
本章習題
第12章 棧與隊列
12.1 棧
12.2 棧的應用
12.2.1 算術表達式的計算
12.3 Catalan數
12.3.1 Catalan數的應用
12.4 隊列
12.4.1 隊列的順序存儲
本章習題
第13章 樹
13.1 樹的基本概念和性質
13.2 二叉樹
13.2.1 二叉樹的性質及存儲結構
13.2.2 二叉樹的遍歷
13.3 二叉樹的應用
13.4 樹的應用
13.4.1 二叉排序樹
13.4.2 平衡二叉樹
13.4.3 哈夫曼樹及哈夫曼編碼
13.5 并查集
本章習題
第14章 圖
14.1 圖的基本概念
14.2 圖的存儲及基本操作
14.2.1 鄰接矩陣法
14.2.2 鄰接表法
14.3 圖的遍歷
14.3.1 深度優(yōu)先搜索
14.3.2 廣度優(yōu)先搜索
14.4 圖遍歷算法的應用
14.5 圖的基本應用
14.5.1 最小生成樹
14.5.2 最短路徑
14.5.3 拓撲排序
本章習題
第15章 排序
15.1 插入排序
15.1.1 直接插入排序
15.1.2 希爾排序
15.2 交換排序
15.2.1 冒泡排序
15.2.2 快速排序
15.3 選擇排序簡介
15.3.1 簡單選擇排序
15.3.2 堆排序
15.4 歸并排序
15.4.1 二路歸并排序
15.4.2 多路歸并排序
15.5 不同排序算法比較
15.5.1 穩(wěn)定性
15.5.2 比較次數
15.5.3 空間復雜度
本章習題
第16章 查找
16.1 基本概念
16.2 折半查找
16.3 鍵樹
16.3.1 鍵樹的定義與Trie樹
16.3.2 鍵樹兩種實現的對比
16.4 后綴樹與后綴數組
16.4.1 后綴樹
16.4.2 后綴數組
16.5 哈希表
16.5.1 哈希表的基本概念
16.5.2 哈希函數
16.6 一致性哈希
16.6.1 普通集群
16.6.2 hash集群
16.6.3 一致性哈希
16.7 海量數據處理
16.7.1 分治--Hash映射
16.7.2 Bit-map
16.7.3 Bloom Filter
16.7.4 倒排索引法
本章習題
第2篇 計算機網絡基礎
第1章 計算機網絡模型
1.1 OSI參考模型
1.2 TCP/IP模型
本章習題
第2章 傳輸層與SOCKET基本操作簡介
2.1 傳輸層
2.2 TCP連接的建立和終止
2.2.1 三次握手建立連接詳解
2.2.2 四次揮手釋放連接詳解
2.3 TCP狀態(tài)轉換圖
2.4 SOCKET的基本操作
本章習題
第3章 網絡層
3.1 IPv4地址及網絡地址轉換NAT
3.2 子網劃分與子網掩碼、CIDR
3.3 ARP、RARP、ICMP
3.4 IPv6
本章習題
第4章