数据结构(C语言实现)
上QQ阅读APP看书,第一时间看更新

前言

数据结构是高等院校计算机科学与技术、软件工程等相关专业的一门重要的专业基础课程,是许多后续课程的重要基础,也是研究计算机科学与工程问题的基础,它对软件设计的发展起着举足轻重的作用。当用计算机来解决实际问题时,就会涉及数据与数据之间关系的表示与处理,而这正是数据结构研究的对象。通过对数据结构的学习,可为后续课程,特别是算法设计和软件开发等方面课程的学习打下坚实的知识基础。

本书较系统地介绍了数据结构中的线性结构、树形结构、图结构及查找、排序技术,阐述了各种数据结构的逻辑关系,讨论了它们在计算机中的存储表示及其运算。本书理论与技术并重,结合工作实际对数据结构中的抽象概念和知识点进行详细讲解,通过丰富的图表和实例、完整的代码帮助读者理解算法思想,使其学会运用数据结构知识解决日常生活中的实际问题并能用算法实现。本书选取的案例丰富、典型,每一章均提供涵盖所有知识点的综合应用实例,课后习题题型多样,涵盖知识点丰富,选取了部分考研试题,以巩固所学知识点。全书采用C语言作为描述语言,并有详细的讲解和注释,所有代码均上机调试通过,并给出程序的运行结果。推荐使用Visual C++6.0及以上版本开发工具调试程序。

本书共分为9章,分别为绪论、线性表、栈与队列、串、数组与广义表、树、图、查找和排序。

第1章:如果读者刚接触数据结构,这一章将告诉您数据结构是什么,以及本书的学习目标、学习方法和学习内容;另外,还介绍了本书对算法的描述方法。

第2章:主要介绍线性表。首先讲解线性表的逻辑结构,然后介绍线性表的各种常用存储结构,在每一节均给出了算法的具体应用。通过学习这一章,读者可以掌握顺序表、动态链表和静态链表的操作。

第3章:主要介绍操作受限的线性表——栈和队列,内容包括栈的定义,栈的基本操作及栈与递归的转化,队列的概念,顺序队列和链式队列的运算。

第4章:主要介绍一种特殊的线性表——串。首先介绍串的概念,然后介绍串的各种存储表示,以及串的模式匹配算法。

第5章:主要介绍数组与广义表。首先介绍数组的概念,数组(矩阵)的存储结构及运算,几种特殊矩阵;然后介绍广义表的概念,广义表的两种存储方式,广义表的操作实现。

第6章:主要介绍非线性数据结构——树和二叉树。首先介绍树和二叉树的概念,然后介绍树和二叉树的存储表示,二叉树的性质,二叉树的遍历和线索化,树、森林与二叉树的转换及哈夫曼树。

第7章:主要介绍非线性数据结构——图。首先介绍图的概念和存储结构,然后介绍图的遍历、最小生成树、拓扑排序、关键路径及最短路径。

第8章:主要介绍数据结构的常用技术——查找。首先介绍查找的概念,然后结合具体实例介绍各种查找算法,并给出了完整程序。

第9章:主要介绍数据结构的常用技术——排序。首先介绍排序的相关概念,然后介绍各种排序技术,并给出了具体实现算法。

目录中带有“*”标记的章节为选学内容。

本书提供配套的教学资源,包括电子课件、例题源代码、课后习题答案等。读者可通过机工教育服务网下载,也可与作者联系索取。邮件地址:235668080@qq.com。

参与本书编写的有陈锐、马军霞、张建伟、张志锋、郑倩、桑永宣、谷培培、王昌海、张世征、张亚洲。其中,陈锐编写第2章和第6章,马军霞编写第5章,张建伟编写第9章,郑倩编写第3章,王昌海编写第8章,其他章节由张志锋、桑永宣、谷培培、张世征、张亚洲编写。

在本书的出版过程中,得到了郑州轻工业大学和机械工业出版社的大力支持,在此表示衷心感谢。

在本书编写过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬!

由于作者水平有限,书中难免存在一些不足之处,恳请读者批评指正。

编者