数据结构
2013-1
华中科技大学出版社
陈倩诒 邓红卫
无
亲,有课件哦!http://you.video.sina.com.cn/a/5639020-2284203340.html
“数据结构”是计算机及相关专业的专业基础核心课程。本书所有算法都采用C语言描述,书中不仅讲解了数据结构的基本理论知识,还提供了大量实例来帮助读者理解和掌握知识点。全书共分9章,内容包括绪论、线性表、栈和队列、串、数组与广义表、树与二叉树、图、查找、内部排序等,每章都对相 关数据结构的逻辑结构、存储结构、基本操作、综合算法等做了全面、深入的阐述。
本书各章内容翔实,算法和例题典型,实践性强,可作为本、专科院校的计算机及相关专业“数据结构”课程的教材,也可作为计算机软件开发人员、参加硕士研究生入学考试和软件资格(水平)考试人员的参考书。
第1章绪论(1)
1.1引言(1)
1.2常用术语和基本概念(1)
1.3算法与算法分析(4)
1.3.1算法的重要特性(4)
1.3.2算法设计的基本要求(4)
1.3.3算法的描述方法(5)
1.3.4算法分析(5)
小结(6)
习题1(7)
第2章线性表(8)
2.1线性表的逻辑结构(8)
2.1.1线性表的定义(8)
2.1.2线性表的抽象数据类型(8)
2.2线性表的顺序存储及实现(10)
2.2.1顺序表(10)
2.2.2顺序表的基本操作(11)
2.3线性表的链式存储及实现(14)
2.3.1单链表(15)
2.3.2单链表的基本运算(16)
2.4顺序表和链表的比较(22)
2.4.1顺序存储结构的优、缺点(22)
2.4.2存储结构的选取(23)
2.5线性表的其他表示形式(24)
2.5.1单循环链表(24)
2.5.2双向链表(25)
2.5.3静态链表(26)
2.6单链表应用举例(27)
2.6.1单链表倒置(27)
2.6.2重复节点的删除(28)
2.6.3单链表的合并(28)
2.6.4一元多项式的表示及相加(29)
小结(31)
习题2(32)
第3章栈和队列(34)
3.1栈(34)
3.1.1栈的定义及基本操作(34)
3.1.2栈的顺序存储(35)
3.1.3栈的链式存储(37)
3.1.4顺序栈和链栈的比较(39)
3.2队列(39)
3.2.1队列的定义及基本操作(39)
3.2.2队列的顺序存储及基本操作(40)
3.2.3队列的链式存储及基本操作(45)
3.3栈的应用举例(47)
3.3.1栈与递归(47)
3.3.2栈与数制转换(49)
3.3.3栈与迷宫问题(50)
3.3.4栈与表达式求值(54)
3.4队列应用举例(56)
3.4.1键盘输入循环缓冲区问题(56)
3.4.2舞伴配对问题(57)
3.4.3杨辉三角问题(59)
小结(61)
习题3(61)
第4章串(64)
4.1串及其类型定义(64)
4.1.1串及其相关术语(64)
4.1.2串的抽象数据类型(65)
4.2串的定长顺序存储(66)
4.2.1串的定长顺序存储结构(66)
4.2.2定长顺序串的基本操作(67)
4.2.3模式匹配(68)
4.3串的堆存储结构(74)
4.3.1堆存储结构(74)
4.3.2堆结构上的基本操作(74)
4.4串的链式存储结构(76)
4.5串的应用举例(77)
4.5.1文本编辑(77)
4.5.2恺撒密码(78)
小结(79)
习题4(79)
第5章数组与广义表(81)
5.1数组及其操作(81)
5.1.1数组的定义(81)
5.1.2数组的顺序表示及实现(82)
5.2特殊矩阵的压缩存储(85)
5.2.1对称矩阵(85)
5.2.2三角矩阵(86)
5.2.3对角矩阵(87)
5.3稀疏矩阵(88)
5.3.1稀疏矩阵的三元组存储(89)
5.3.2稀疏矩阵的十字链表存储(94)
5.4广义表(97)
5.4.1广义表的定义(97)
5.4.2广义表的存储结构(98)
5.4.3广义表的基本操作(100)
小结(103)
习题5(103)
第6章树与二叉树(105)
6.1树(105)
6.1.1树的逻辑结构(105)
6.1.2树的存储结构(109)
6.2二叉树定义与性质(111)
6.2.1二叉树的基本概念(111)
6.2.2二叉树的主要性质(112)
6.3二叉树的存储与基本操作实现(113)
6.3.1二叉树的存储(113)
6.3.2二叉树的基本操作与实现(117)
6.4二叉树的遍历(119)
6.4.1二叉树的遍历方法及算法实现(119)
6.4.2从遍历序列推导二叉树(124)
6.5线索二叉树(125)
6.5.1线索二叉树的定义及结构(125)
6.5.2线索二叉树的基本操作及算法实现(127)
6.6树、森林与二叉树的转换(132)
6.6.1树转换为二叉树(132)
6.6.2森林转换为二叉树(133)
6.6.3二叉树转换为树或森林(133)
6.7二叉树遍历算法的应用(134)
6.7.1查找数据元素(134)
6.7.2显示二叉树(134)
6.7.3统计叶子节点数目(135)
6.7.4求二叉树深度(135)
6.7.5创建二叉树(136)
6.8最优二叉树——哈夫曼树(136)
6.8.1哈夫曼树的基本概念(136)
6.8.2哈夫曼树的构造算法(138)
6.8.3哈夫曼编码(140)
小结(143)
习题6(143)
第7章图(147)
7.1图的逻辑结构(147)
7.1.1图的定义和基本术语(147)
7.1.2图的抽象数据类型(151)
7.2图的存储结构(152)
7.2.1邻接矩阵(152)
7.2.2邻接表(154)
7.2.3十字链表(157)
7.2.4图的存储结构的比较(159)
7.3图的遍历(159)
7.3.1深度优先搜索(160)
7.3.2广度优先搜索(161)
7.4图与最小生成树(163)
7.4.1生成树和生成森林(163)
7.4.2最小生成树(165)
7.4.3Prim算法生成最小生成树(165)
7.4.4Kruskal算法生成最小生成树(168)
7.5AOV网与拓扑排序(170)
7.5.1有向无环图(170)
7.5.2AOV网(171)
7.5.3拓扑排序(172)
7.6AOE网与关键路径(175)
7.6.1AOE网(175)
7.6.2关键路径(176)
7.7图与最短路径(180)
7.7.1从一个源点到其余各顶点的最短路径(181)
7.7.2任意一对顶点之间的最短路径(183)
小结(186)
习题7(186)
第8章查找(190)
8.1静态查找表(190)
8.1.1顺序表查找(190)
8.1.2有序表查找(191)
8.1.3静态树表的查找(192)
8.1.4索引顺序表的查找(193)
8.2动态查找表(194)
8.2.1二叉排序树和平衡二叉树(195)
8.2.2B-树和B+树(201)
8.3哈希表(205)
8.3.1什么是哈希表(205)
8.3.2哈希函数的构造方法(206)
8.3.3处理冲突的方法(207)
8.3.4哈希表的查找及性能分析(209)
小结(210)
习题8(210)
第9章内部排序(213)
9.1排序的基本概念(213)
9.2插入排序(214)
9.2.1直接插入排序(215)
9.2.2折半插入排序(216)
9.2.3二路插入排序(217)
9.2.4表插入排序(219)
9.2.5希尔排序(219)
9.3交换排序(221)
9.3.1冒泡排序(221)
9.3.2快速排序(224)
9.4选择排序(227)
9.4.1简单选择排序(227)
9.4.2树形选择排序(228)
9.4.3堆排序(229)
9.5归并排序(233)
9.6基数排序(235)
9.6.1多关键字排序(235)
9.6.2链式基数排序(236)
9.7各种内部排序方法的比较(237)
小结(238)
习题9(239)
参考文献(241)
无