本书是利用C语言编写的一本数据结构教材,适合在学习C语言之后使用。全书介绍了各种常用而具体的数据结构、对应的存储结构、以及各种典型运算的方法和算法。书中含有丰富而实用的算法实例,这些算法都具有较好的可读性、结构化和时空有效性,通过深入地学习和分析,能够大大提高软件开发和设计能力。本书适合作为各级各类学校开设数据结构课程的教材或教学参考书,也适合软件开发人员参考。
第1章 绪论\r\n 1.1 基本概念\r\n 1.2 算法描述\r\n 1.3 算法评价\r\n 习题一\r\n第2章 线性表\r\n 2.1 线性表的定义和操作\r\n 2.2 线性表的顺序存储结构和操作实现\r\n 2.2.1 线性表的序存储\r\n 2.2.2 顺序存储下线性表的操作实现\r\n 2.3 线性表的链接存储结构\r\n 2.3.1 链接存储的概念\r\n 2.3.2 线性表的链接存储\r\n 2.3.3 在单链表上的插入和删除操作\r\n 2.3.4 单链表中的结点类型\r\n 2.3.5 向链表中的结点类型和插入与删除操作\r\n 2.3.6 带表头附加结点的线性链表\r\n 2.3.7 循环链表\r\n 2.4 线性表操作在单链表上的实现\r\n 习题二\r\n第3章 稀疏矩阵和广义表\r\n 3.1 稀疏矩阵\r\n 3.1.1 稀疏矩阵的定义\r\n 3.1.2 稀疏矩阵的存储结构\r\n 3.1.3 稀疏矩阵的运算\r\n 3.2 广义表\r\n 3.2.1 广义表的定义\r\n 3.2.2 广义表的存储结构\r\n 3.2.3 广义表的运算\r\n 3.2.4 简单程序举例\r\n 习题三\r\n第4章 栈和队列\r\n 4.1 栈\r\n 4.1.1 栈的定义\r\n 4.1.2 栈的运算概述\r\n 4.2 栈的顺序存储结构和操作实现\r\n 4.3 栈的链接存储结构和操作实现\r\n 4.4 栈的简单应用举例\r\n 4.5 算术表达式的计算\r\n 4.5.1 算术表达式的两种表示\r\n 4.5.2 后缀表达式求值的算法\r\n 4.5.3 把中缀表达式转换为后缀表达式的算法\r\n 4.6 栈与递归\r\n 4.7 队列\r\n 4.7.1 队列的定义\r\n 4.7.2 队列的运算概述\r\n 4.7.3 队列的顺序存储结构和操作实现\r\n 4.7.4 队列的链接存储结构和操作实现\r\n 4.7.5 队列的应用简介\r\n 习题四\r\n第5章 树和二叉树\r\n 5.1 树的概念\r\n 5.1.1 树的定义\r\n 5.1.2 树的表示\r\n 5.1.3 树的基本术语\r\n 5.1.4 树的性质\r\n 5.2 二叉树\r\n 5.2.1 二叉树的定义\r\n 5.2.2 二叉树的性质\r\n 5.2.3 二叉树的运算概述\r\n 5.2.4 二叉树的存储结构\r\n 5.3 二叉树遍历\r\n 5.4 二叉树的其他运算\r\n 5.5 树的存储结构和运算\r\n 5.5.1 树的运算概述\r\n 5,5.2 树的存储结构\r\n 5.5.3 树的运算\r\n 习题五\r\n第6章 二叉树的应用\r\n第7章 图\r\n第8章 查找\r\n第9章 排序\r\n参考文献\r\n \r\n
数据结构主要研究数据的逻辑结构、在计算机中的存储结构以及对数据进行各种非数值运算的方法和算法。数据的逻辑结构分为集合、线性、树(层次)、图(网状)等四种基本结构,由它们可以构成任何较复杂的逻辑结构。数据的存储结构分为顺序、链接、索引、散列等四种基本结构,同样由它们能够构成各种较复杂的存储结构。对数据进行的非数值运算主要包括查找、排序、插入、删除、修改、遍历等。对于同样的数据,若采用的逻辑结构和存储结构不同,对某一运算所采用的方法不同,则将得到不同的算法,进而在计算机上会有不同的运行时间和存储空间效率。通过该课程的学习,读者能够根据实际应用中对数据处理的要求,为数据选择和建立合适的逻辑结构和存储结构,接着选择和使用较好的数据处理方法,以及利用一种程序设计语言编写出相应的算法,最后在计算机系统上调试、运行和实现算法。
本书是根据一般计算机及相关专业对开设数据结构课程的知识结构要求编写的,它介绍的是数据结构学科成熟而实用的知识,摈弃那些深奥难懂而又过时不用的内容;在写法上力求条理清楚、层次分明、内容连贯、循序渐进、便于阅读和自学;在各种运算方法和算法的分析上,力求细致、生动、深入、透彻、便于理解。
本书共包括9章。第1章概要介绍数据的逻辑结构和存储结构,以及算法的描述和评价。第2至4章主要介绍线性表、栈、队列、稀疏矩阵、广义表等线性数据结构的定义、存储结构以及相应运算的方法和算法。第5、6章主要介绍树、二叉树、二叉搜索树、堆、哈夫曼树等树结构的定义和存储结构,以及建立、遍历、查找等运算的方法和算法。第7章主要介绍图的定义和存储结构,以及图的建立及其遍历、求最小生成树、拓扑排序等运算的方法和算法。第8章主要介绍顺序、二分、索引、散列等查找的方法和算法。第9章主要介绍插入、选择、堆、快速、二路归并、外存文件等排序的方法和算法。
本书给出的所有算法和程序都在C语言运行环境下调试通过,同时,由于C抖兼容C语言,作者也在VC++6.0环境下调试通过所有算法和程序,因此能够保证算法是正确和有效的。
本书每章后面都配有丰富的练习题,读者通过做练习和上机调试程序,能够巩固和提高所学知识,提高分析问题和解决问题的能力。由于数据结构习题一般较难,有时不太容易做出,为了使读者得到帮助和启发,专门为本书配有学习指导与习题解答一书,并同本书一同出版发行。当然,读者要尽量独立思考完成作业,绝不能依赖现成的答案。
使用本书推荐讲授学时为64,上机实验学时为32,实验题目可采用教材中所给的调试程序,也可由实验指导教师指定。数据结构课程所涉及的内容较多,而教学时数有限,所以任课教师可根据实际情况对本书中的内容进行取舍。另外,对于加星号的内容和习题
由于较难,可以不作教学要求。
本书由徐孝凯教授和贺桂英副教授共同编写。在教学大纲构思和教材内容编写的过程中得到了巫家敏教授的真诚指导,在此表示衷心感谢!
由于作者水平有限,不足之处在所难免,敬请同行专家和广大读者指正。电子邮箱地址为xuxk@crtvu.edu.cn,联系电话为010-64910302。