“数据结构”是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其
他理工专业的热门选修课,对于训练学生程序设计能力和编程水平、提高专业素质有重要作用。
该书详细讨论了线性表、栈、队列、串、数组、树和二叉树、图等常用数据结构及其应用,并对查找和排序的各种实现方法进行了阐述和比较,涵盖了数据结构的全部经典内容。
本书可作为国内高等院校计算机学科相关专业的教材,也可供从事计算机软件开发和应用的工程技术人员阅读、参考。其销售渠道主要是面向国内高等院校。在每学年的高效春秋季教材预定目录及指南中可作广泛宣传与引导。
适读人群 :本科、学生、研究人员、教师
该教材将成为数据结构教学实践中已有教学研究成果的载体,集中体现先进的教学思想与教学理念,相信该教材的出版将对提高计算机科学与技术专业数据结构课程的教学水平和教学质量起到积极的作用。
再版前言:
“数据结构”是计算机及相关专业的专业基础核心课程。
在计算机科学的各领域中,经常要使用到各种不同的数据结构,譬如操作系统中要使用到队列、目录树等;数据库系统中要使用到线性表、索引树等;编译系统中要使用到栈、哈希表、语法树等;人工智能中要使用广义表、检索树、有向图等。因此,当你在掌握了各种常用数据结构,能对算法进行时间和空间复杂度分析后,便会知道在何种情况下使用何种数据结构zui方便有效,从而为以后研究和开发大型程序打下坚实基础。学好数据结构,对从事计算机技术及相关领域工作的人员来说,非常重要。
数据结构主要是研究现实世界中的各种数据(数字、字符、字符串、声音、图形、图像等)的逻辑结构、在计算机中的存储结构以及相关算法实现;分析针对同一问题的各种不同算法的优劣。学生学习该课程后,将具备用各种数据结构来解决实际问题及评价算法优劣的能力,为后续计算机专业课程的学习打下坚实基础,起到了承上启下的关键作用。
本书结合编者多年教学及实践经验,在《数据结构》(C语言版)(2013年1月出版)的基础上,坚持“面向应用,易教易学”原则,做了如下修订:增加了“斐波拉切查找”、“跳跃表”、“红黑树”、“优先队列”等内容,扩大知识点且做到完全涵盖硕士研究生数据结构考试大纲所规定的考试内容;增加“实验指导”内容,方便教师合理安排实验,方便学生了解具体实验内容;将“图”的部分算法进行合理修正,使之更方便理解和实现;删除了部分过时或不常用的算法内容;对全书的一些印刷错误进行了修正。
本书仍采用常用的c语言作为算法的描述语言,形式上学生更容易理解和接受。全书力求将数据结构理论知识与具体应用实例相结合,有助加深学生的理解和掌握。本书中所选的例题和习题都具有一定的针对性和代表性。
百密一疏,在所难免,本书也必然存在一些不足,恳请读者们提出好的意见和建议。
编者 2017年7月
1. 绪论
数据、数据元素、数据结构、数据类型、抽象数据类型的概念;算法、算法描述与算法分析。
2. 线性表
线性表的逻辑结构定义、基本操作和在两种存储结构中基本操作的实现;链表;特殊形式的线性表;用线性表表示一元多项式及实现稀疏多项式的相加等运算。
3. 栈和队列
栈和队列的结构特性、基本操作及在两种存储结构上基本操作的实现;栈和队列的应用、递归算法的设计。
4. 串
串的逻辑结构、存储结构及其基本运算;串上实现的模式匹配算法。
5. 数组和广义表
数组的逻辑结构定义和存储方法;特殊矩阵和稀疏矩阵的压缩存储方法;广义表的逻辑结构和存储结构以及广义表运算的递归算法。
6. 树和二叉树
树的基本概念;二叉树的定义、性质、存储表示;二叉树的遍历;线索二叉树;森林和二叉树的相互转换;树的应用;哈夫曼树及哈夫曼编码。
7. 图
图的基本概念、存储表示(邻接矩阵、邻接表);图的遍历;最小生成树;拓扑排序;关键路径;最短路径。
8. 查找
查找表是集合类型的数据结构,其操作借助静态查找表(顺序查找、折半查找、斐波拉契查找、跳跃列表)、动态查找表(二次排序树、B树、红黑树)、哈希表实现。
9. 内部排序
内部排序介绍插入排序、交换排序(冒泡排序、快速排序)、选择排序(堆、优先队列)、归并排序;排序的基本思想和算法分析。
10.实验安排