目录
1 绪论...................................................................................................................................... (1)
1.1 引言... (1)
1.2 C语言编程常见问题分析... (2)
1.2.1 参数校验问题... (3)
1.2.2 return语句的问题... (3)
1.2.3 while循环和for循环的问题... (4)
1.2.4 if语句的多个判断问题... (4)
1.2.5 goto语句问题... (5)
1.2.6 switch …case 和if … else if 的效率区别... (5)
1.3 任意数据类型处理... (7)
1.3.1 任意数据类型处理的设计方法... (7)
1.3.2 任意数据类型处理的实例... (8)
1.3.3 任意数据类型处理的回调函数封装... (9)
1.4 多任务介绍... (10)
1.4.1 多任务简介... (10)
1.4.2 锁的概念... (10)
1.4.3 Windows下常用多任务操作函数... (10)
1.4.4 Linux/Unix下常用多任务操作函数... (12)
1.4.5 VxWorks下常用多任务操作函数... (12)
1.4.6 多任务函数的封装... (13)
1.5 软件设计简介... (14)
1.5.1 软件设计历史简述... (14)
1.5.2 微观设计学原理简介... (15)
2 数组.................................................................................................................................... (17)
2.1 栈... (17)
2.1.1 栈的基本概念... (17)
2.1.2 栈的编码实现... (18)
2.1.3 多任务栈的实现... (21)
2.2 队列... (24)
2.2.1 队列的基本概念和接口... (24)
2.2.2 环形队列(Queue)(25)
2.2.3 STL中的动态队列(STL∷deque)(29)
2.2.4 动态环形队列... (30)
2.2.5 各种队列的时间效率测试及分析... (35)
2.2.6 各种队列的适用范围... (36)
2.2.7 关于时间效率和空间效率的原则... (36)
2.3 排序表... (37)
2.3.1 排序算法介绍... (37)
2.3.2 快速排序算法... (38)
2.3.3 排序表的设计... (40)
2.3.4 非递归的快速排序算法... (43)
2.3.5 快速排序算法的复杂度分析... (47)
2.3.6 二分查找算法... (48)
2.4 实例:HOOK管理功能的实现... (49)
2.4.1 单个函数的HOOK实现... (49)
2.4.2 多个函数的HOOK实现... (50)
2.4.3 HOOK功能的应用简介... (55)
2.4.4 HOOK使用的注意事项... (56)
本章小结... (56)
习题与思考... (56)
3 链表..................................................................................................................................... (57)
3.1 单向链表... (57)
3.1.1 单向链表的存储表示... (57)
3.1.2 单向链表的接口设计... (59)
3.1.3 单向链表的基本功能编码实现... (60)
3.2 单向链表的逐个节点遍历... (69)
3.2.1 单向链表逐个节点遍历基本概念... (69)
3.2.2 单向链表逐个节点遍历编码实现... (70)
3.3 单向链表的排序... (71)
3.3.1 插入排序... (71)
3.3.2 归并插入排序... (74)
3.3.3 基数排序... (79)
3.4 双向链表... (85)
3.4.1 双向链表的基本概念... (85)
3.4.2 双向链表的设计... (85)
3.4.3 双向链表的编码实现... (86)
3.5 使用整块内存的链表... (107)
3.5.1 整块内存链表的基本概念... (107)
3.5.2 整块内存链表的编码实现... (109)
3.6 实例:使用链表管理短信息系统的CACHE. (113)
3.6.1 短信息系统的CACHE管理基本概念... (113)
3.6.2 短信息系统的发送和接收分析... (114)
3.6.3 短信息系统CACHE管理的编码实现... (115)
本章小结... (118)
习题与思考... (118)
4 哈希表................................................................................................................................ (119)
4.1 哈希表... (119)
4.1.1 哈希表的基本概念... (119)
4.1.2 哈希表的索引方法... (120)
4.1.3 哈希表的冲突解决方法... (123)
4.1.4 哈希表基本操作的源代码... (125)
4.2 哈希链表... (130)
4.2.1 哈希表和数组、链表的效率比较... (130)
4.2.2 时间效率和空间效率的关系... (131)
4.2.3 哈希链表的基本概念... (132)
4.2.4 哈希链表的操作... (133)
4.2.5 哈希链表的编码实现... (135)
4.3 实例:WebServer的动态CACHE文件管理... (143)
4.3.1 WebServer的动态CACHE文件管理基本概念... (143)
4.3.2 CACHE文件管理功能的设计... (144)
4.3.3 CACHE文件管理功能的编码实现... (145)
本章小结... (151)
习题与思考... (151)
5 树................................................................................................................. (153)
5.1 普通树... (153)
5.1.1 普通树的描述方法... (153)
5.1.2 树的操作接口设计... (154)
5.1.3 树的遍历算法... (154)
5.1.4 树的编码实现... (157)
5.1.5 使用树的遍历算法来实现Xcopy功能... (163)
5.2 二叉树... (166)
5.2.1 二叉树的基本概念... (166)
5.2.2 二叉树的树梢及二叉树的高度... (166)
5.2.3 二叉树的描述方法... (167)
5.3 二叉排序树... (168)
5.3.1 二叉排序树的基本概念... (168)
5.3.2 二叉排序树的查找... (168)
5.3.3 二叉排序树的插入... (170)
5.3.4 二叉排序树的删除... (172)
5.3.5 二叉排序树的遍历... (176)
5.3.6 二叉排序树的旋转操作... (178)
5.4 AVL搜索树... (181)
5.4.1 AVL搜索树的基本概念... (181)
5.4.2 AVL搜索树的插入... (181)
5.4.3 AVL搜索树的删除... (184)
5.4.4 AVL树的源代码... (187)
5.5 红黑树... (205)
5.5.1 红黑树的基本概念... (205)
5.5.2 红黑树的插入操作... (206)
5.5.3 红黑树的删除操作... (209)
5.5.4 红黑树的编码实现... (214)
5.6 实例:搜索引擎的实现... (236)
5.6.1 搜索引擎的实现思路和方法... (236)
5.6.2 搜索引擎的时间效率和空间效率分析... (238)
5.6.3 高级搜索的实现... (240)
本章小结... (241)
习题与思考... (241)
6 复合二叉树.................................................................................................... (243)
6.1 哈希红黑树... (243)
6.1.1 哈希红黑树的基本概念... (243)
6.1.2 哈希红黑树的查找... (245)
6.1.3 哈希红黑树的插入... (246)
6.1.4 哈希红黑树的删除... (248)
6.1.5 哈希红黑树的释放... (248)
6.1.6 哈希红黑树的遍历... (249)
6.1.7 哈希红黑树的编码实现... (249)
6.1.8 哈希红黑树的效率分析... (255)
6.2 哈希AVL树... (256)
6.2.1 哈希AVL树的基本概念... (256)
6.2.2 哈希AVL树的查找... (257)
6.2.3 哈希AVL树的插入... (258)
6.2.4 哈希AVL树的删除... (260)
6.2.5 哈希AVL树的释放... (261)
6.2.6 哈希AVL树的遍历... (261)
6.2.7 哈希AVL树的编码实现... (261)
6.2.8 复合数据结构的分类... (266)
6.3 抗DoS/DDoS攻击的实例... (267)
6.3.1 DoS/DDoS攻击的概念... (267)
6.3.2 常见DoS/DDoS攻击手段及防范策略... (268)
6.3.3 抗DoS/DDoS攻击的实现... (269)
6.3.4 抗DoS/DDoS攻击的编码实现... (269)
本章小结... (272)
习题与思考... (273)
7 图................................................................................................................. (275)
7.1 图的基本概念和描述方法... (275)
7.1.1 图的基本概念... (275)
7.1.2 图的描述方法... (276)
7.2 Dijkstra最短路径算法... (277)
7.2.1 Dijkstra最短路径算法的描述... (277)
7.2.2 Dijkstra最短路径算法的过程图解... (277)
7.2.3 Dijkstra最短路径算法的编码实现... (278)
7.3 最小生成树算法... (282)
7.3.1 最小生成树算法的基本概念... (282)
7.3.2 最小生成树算法的过程图解... (282)
7.3.3 最小生成树的算法流程图... (283)
7.3.4 最小生成树算法的编码实现... (284)
7.4 深度优先搜索算法... (286)
7.4.1 深度优先搜索算法的描述... (286)
7.4.2 深度优先搜索算法的过程图解... (287)
7.4.3 深度优先搜索算法的流程图... (288)
7.4.4 深度优先搜索算法的编码实现... (289)
7.5 宽度优先搜索算法... (293)
7.5.1 宽度优先搜索算法的描述... (293)
7.5.2 宽度优先搜索算法的编码实现... (294)
7.6 无环有向图的分层算法... (297)
7.6.1 无环有向图的分层算法描述... (297)
7.6.2 无环有向图的分层算法过程图解... (298)
7.7 哈密顿圈算法... (299)
7.7.1 哈密顿圈算法的描述... (299)
7.7.2 哈密顿圈算法的过程图解... (300)
本章小结... (302)
习题与思考... (302)
8 多任务算法.................................................................................................... (303)
8.1 读写锁... (303)
8.1.1 读写锁概念的引出... (303)
8.1.2 读写锁算法的分析和实现... (304)
8.1.3 读写锁的编码实现... (305)
8.2 多任务资源释放问题... (308)
8.2.1 子任务释放问题... (308)
8.2.2 多个子任务释放... (309)
8.2.3 多任务释放的实现... (309)
8.3 多任务下的遍历问题... (313)
8.3.1 链表在多任务下的遍历问题... (313)
8.3.2 多任务链表的设计和编码实现... (313)
8.3.3 多任务链表的遍历操作编码实现... (318)
8.3.4 多个任务同时遍历的情况... (321)
8.4 多任务二叉树的设计... (322)
8.5 消息队列... (327)
8.5.1 消息队列的基本概念... (327)
8.5.2 消息队列的设计和编码实现... (327)
8.6 实例:线程池调度的管理... (331)
8.6.1 线程池调度管理的基本概念... (331)
8.6.2 线程池调度管理的编码实现... (332)
本章小结... (335)
习题与思考... (335)
9 内存管理算法................................................................................................. (337)
9.1 动态等尺寸内存的分配算法... (337)
9.1.1 静态等尺寸内存分配算法的分析... (337)
9.1.2 动态等尺寸内存分配算法... (338)
9.2 内存垃圾收集算法... (351)
9.2.1 垃圾收集算法简介... (351)
9.2.2 用户层垃圾回收算法的实现... (352)
9.2.3 多任务下的垃圾收集... (360)
9.2.4 使用垃圾回收算法来做内存泄漏检查... (367)
9.3 实例:动态等尺寸内存管理算法的应用... (370)
9.3.1 Emalloc内存管理的概念... (370)
9.3.2 Emalloc内存管理的编码实现... (371)
9.3.3 Emalloc内存管理的使用方法... (375)
9.3.4 Emalloc内存管理的内存越界检查... (376)
本章小结... (378)
习题与思考... (378)
附 参考文献...................................................................................................... (379)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=741594