计算机类专业教育 > 数据结构与算法类

数据结构

书号:9787113130329 套系名称:高等学校计算机类课程应用型人才培养规划教材

作者:赵敏媛 施一萍 张辉 出版日期:2011-08-01

定价:20.00 页码 / 开本:184 /16

策划编辑:严晓舟 责任编辑:周海燕

适用专业:无 适用层次:高等院校

最新印刷时间:

资源下载
教学课件 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色

  • 本书前半部分从抽象数据类型的角度讨论各种常用的数据结构及其应用,包括线性表、栈、队列、数组、树和二叉树、图等,阐述各种数据结构的逻辑结构,讨论它们在计算机中的存储表示,以及在不同存储结构下运算算法的实现,并对算法的效率进行了简要分析。本书后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。全书采用C语言作为数据结构和算法的描述工具。为了帮助读者进一步深入理解教材内容,巩固概念,各章配有难易适当的习题,以适应不同程度读者练习的需要。
    本书结构清晰、语言精练、注重应用,强调系统性和实用性的结合,适合作为高等学校计算机及相关专业的本科教材或参考书,也可作为计算机爱好者的自学参考书。


     


  • 前言
    数据结构是计算机及其相关专业的核心基础课程,涵盖了计算机学科的算法设计、操作系统和编译原理等课程涉及的大部分相关算法的实现。学好本课程,不仅对后续课程的学习有很大帮助,而且对实际问题的解决能起到关键的作用。
    数据结构主要研究数据的组织形式以及建立在这些结构之上的各种运算的实现。数据结构课程的一个重要任务是培养进行复杂程序设计的能力和良好的程序设计习惯,使学生掌握数据的组织方法,选择合适的数据结构来实现相应的设计,使实际问题获得最好的解决方案,从而提高学生的软件设计和编程水平。本书是针对培养计算机专业应用型本科人才的需要,结合计算机专业的相关教学大纲编写的,在内容选取上符合应用型本科人才培养目标的要求,在内容的组织编排上体现理论与应用相结合的原则,兼顾学科的广度和深度,适用面广。
    全书共分为9章:第1章为绪论,介绍数据结构的基本概念和算法分析方法;第2章介绍线性表,讨论线性表的逻辑结构、线性表的顺序存储和链式存储;第3章和第4章分别讨论栈和队列的特点及其在不同存储结构上的基本运算实现;第5章介绍数组的表示,讨论特殊矩阵的压缩存储方法和稀疏矩阵的表示;第6章介绍树和二叉树,讨论树和二叉树的概念与各种运算;第7章介绍图,讨论图的存储结构和相关算法;第8章介绍各种常用的查找方法及其实现;第9章介绍排序,讨论各种常用的排序方法及其实现。鉴于目前“C语言程序设计”已经普遍成为数据结构的先修课,全书采用C语言作为数据结构和算法的描述工具。为了帮助读者进一步深入理解教材内容,巩固概念,各章都配有难易适当的习题,以适应不同程度读者练习的需要。
    本书特色
    1.理论和实践应用相结合
    应用型人才的培养应该着重能力培养,教材的内容也应该注重理论知识与实践的结合。本书在理论讲解中穿插演示性例题,使枯燥的理论变得更容易理解和接受;此外,在每一章的最后都有相应数据结构的应用实例,目的是加深理解,强化应用。
    2.系统性和实用性相结合
    各种数据结构的介绍都采用抽象数据类型的定义,引导读者学习抽象数据类型的使用,为今后学习面向对象程序设计作一些铺垫。在介绍数据结构的基本运算及其应用时,不仅仅局限于算法思想,而且还着眼于灵活运用和程序实现,书中给出的部分应用示例的完整源程序,都在Visual C++ 6.0环境下调试通过,具有很好的实用价值,也便于读者自学。
    本课程的先修课程有高级语言程序设计和离散数学。开设本课程时,授课学时为48~64学时,教师可以根据相应教学大纲及学时安排,选讲部分内容。
    本书是上海工程技术大学的三位教师在多年从事C语言、数据结构以及计算机软件开发工作的基础上编写的,第1章~第4章由赵敏媛编写,第5章和第6章由张辉编写,第7章~第9章由施一萍编写。
    本书由南京大学徐洁磐教授主审,他在百忙之中认真审阅了全书,提出了许多宝贵的改进意见。在本书的编写过程中,还得到了上海海事大学周广声教授的关心和指导,在此一并表示衷心的感谢!
    本书适合作为计算机及相关专业的本科教材或参考书,面向计算机科学与技术、计算机工程、软件工程、信息管理与系统等信息技术类专业,也可作计算机爱好者的自学参考书。
    由于编者水平有限,书中难免存在不足和疏漏之处,敬请读者批评指正。


    编  者     
    2011年5月
     

  • 目录
    第1章  绪论 1
    1.1  数据结构的概念 1
    1.1.1  基本概念和术语 1
    1.1.2  逻辑结构 2
    1.1.3  存储结构 4
    1.1.4  抽象数据类型 5
    1.2  算法 7
    1.2.1  算法的描述 7
    1.2.2  算法设计的要求 7
    1.2.3  算法分析 7
    第2章  线性表 12
    2.1  线性表的抽象数据类型 12
    2.2  线性表的顺序存储结构 14
    2.2.1  顺序表的类型定义 15
    2.2.2  线性表基本运算在顺序表上的实现 15
    2.2.3  顺序实现的算法分析 17
    2.2.4  顺序表的应用举例 17
    2.3  线性表的链式存储结构 19
    2.3.1  单链表 19
    2.3.2  单循环链表 26
    2.3.3  双向链表 27
    第3章  栈 31
    3.1  栈的抽象数据类型 31
    3.2  栈的顺序存储结构 33
    3.2.1  顺序栈的类型定义 33
    3.2.2  栈基本运算在顺序栈上的实现 34
    3.2.3  顺序栈的应用举例 35
    3.3  栈的链式存储结构 36
    3.3.1  链栈的类型定义 37
    3.3.2  栈基本运算在链栈上的实现 37
    3.3.3  链栈的应用举例 38
    3.4  栈与递归的实现 39
    第4章  队列 42
    4.1  队列的抽象数据类型 42
    4.2  队列的顺序存储结构 44
    4.2.1  循环队列的类型定义 45
    4.2.2  队列基本运算在循环队列上的实现 45
    4.2.3  循环队列的应用举例 46
    4.3  队列的链式存储结构 47
    4.3.1  链队列的类型定义 47
    4.3.2  队列基本运算在链队列上的实现 48
    4.3.3  链队列的应用举例 49
    第5章  数组和稀疏矩阵 52
    5.1  数组的概念与表示 52
    5.1.1  数组的概念 52
    5.1.2  数组的顺序表示 54
    5.1.3  特殊矩阵的压缩存储 56
    5.2  稀疏矩阵 57
    5.2.1  稀疏矩阵的三元组表示 58
    5.2.2  稀疏矩阵的十字链表表示 65
    第6章  树和二叉树 69
    6.1  树 69
    6.1.1  树的定义和表示 69
    6.1.2  树的基本术语和操作 71
    6.1.3  树的存储结构 73
    6.2  二叉树 76
    6.2.1  二叉树的定义 76
    6.2.2  二叉树的性质 79
    6.2.3  二叉树的存储结构 81
    6.3  二叉树的遍历 83
    6.3.1  常用的二叉树遍历算法 83
    6.3.2  遍历算法的应用 90
    6.4  树和森林 92
    6.4.1  森林转换为二叉树 92
    6.4.2  二叉树转换为森林 93
    6.4.3  树的遍历 94
    6.4.4  森林的遍历 95
    6.5  哈夫曼树及其应用 96
    6.5.1  哈夫曼树 96
    6.5.2  哈夫曼算法 97
    6.5.3  哈夫曼编码 99
    第7章  图 104
    7.1  图的基本概念 104
    7.1.1  图的抽象数据类型的定义 104
    7.1.2  图的基本术语 106
    7.2  图的存储结构 108
    7.2.1  邻接矩阵 108
    7.2.2  邻接表 110
    7.3  图的遍历 112
    7.3.1  深度优先搜索 112
    7.3.2  广度优先搜索 114
    7.4  最小生成树 115
    7.4.1  普里姆算法 116
    7.4.2  克鲁斯卡尔算法 119
    7.5  拓扑排序 121
    7.6  关键路径 124
    7.7  最短路径 129
    7.7.1  单源点最短路径 129
    7.7.2  每对顶点之间的最短路径 131
    第8章  查找 135
    8.1  查找表 135
    8.2  静态查找表 136
    8.2.1  顺序查找 136
    8.2.2  折半查找 137
    8.2.3  分块查找 138
    8.3  动态查找表 139
    8.3.1  二叉排序树 139
    8.3.2  平衡二叉树 143
    8.4  哈希表 146
    8.4.1  哈希函数的构造方法 146
    8.4.2  哈希冲突的解决方法 147
    第9章  排序 152
    9.1  排序的基本概念 152
    9.2  插入排序 153
    9.2.1  直接插入排序 153
    9.2.2  希尔排序 154
    9.3  交换排序 156
    9.3.1  冒泡排序 156
    9.3.2  快速排序 157
    9.4  选择排序 159
    9.4.1  直接选择排序 159
    9.4.2  堆排序 159
    9.5  归并排序 161
    9.6  基数排序 162
    附录A  实验安排 167
    附录B  中英名词对照表 169
    参考文献

  •  
  •