本书共11章,一方面,涵盖数据结构的基本概念,定义了线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、排序等各种结构的抽象数据类型,并给出了相应操作的实现算法,最后一章给出了几个课程设计的实例。另一方面,采用C语言描述算法,并给出了各种算法的效率分析,以及这些结构在计算机科学及其他领域的应用。此外,每章后均配有典型算法设计、上机实验题和练习题。本书中的所有算法都在VC++环境下调试通过。
数据结构课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们结合多年的教学经验和应用型高校的学生需求,编写了这本适用于普通高等院校计算机及相关专业本科生数据结构课程的教材。数据结构也是一门应用性非常强的课程,必须在掌握各种数据结构的基础上,通过尽可能多的上机练习使学生灵活应用所学理论知识。本书在编写上突出了课程学科能力的培养,体现了兼顾“理论和应用”的教学改革理念。在第1版的基础上,第2版增加了几个重要数据结构的具体实例。
本书具有以下特色:
重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
通过典型算法设计的分析,使学生对所学知识的掌握更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
通过课程设计的综合训练,进一步提高学生解决实际问题的能力。
本书为教师提供教学课件、习题答案以及所有算法的调试程序,有需要的读者可登录华章网站(www.hzbook.com)下载。
“数据结构”是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,同时已成为其他理工科专业的热门课程。学好该课程,不仅对学习后续算法设计、数值分析、操作系统、编译原理等课程有很大帮助,而且在实际中有广泛的用途。
数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现。它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧。
“数据结构”课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们在参考各种数据结构教材的基础上,结合作者多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生的数据结构教材。本书的编写突出了课程学科能力的培养,体现了“理论和应用”兼顾的教学改革理念。
本书分为11章:第1章绪论,介绍数据、数据结构、抽象数据类型等基本概念,特别是算法分析的方法;第2章线性表,介绍线性表的两种存储结构(顺序表和链表)的逻辑结构与基本运算的实现过程;第3章栈与队列,介绍两种特殊的线性结构的概念与应用;第4章串,介绍串的概念与模式匹配算法;第5章数组与广义表,介绍数组和稀疏矩阵的概念及相关运算的实现,以及广义表的存储结构及相关运算的实现;第6章树与二叉树,介绍树与二叉树的概念和各种运算的实现过程,其中特别突出二叉树的各种递归和非递归算法;第7章图,介绍图的基本概念和各种运算的实现过程;第8章查找,介绍各种常用查找算法的实现过程;第9章排序,介绍各种常用排序算法的实现过程;第10章文件,介绍常用的文件结构;第11章课程设计举例,给出了几个重要数据结构的具体实例。
数据结构是一门应用性非常强的课程,必须在掌握了各种数据结构的基础上,尽可能多地上机练习。为此,本书每章后面都配有相应的上机实验题。
全书采用C语言作为数据结构和算法的描述语言,所有算法均在VC++环境下调试通过。
本书具有以下特色:
1)语言通俗易懂,阐述简洁明了。
2)重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
3)为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
4)算法丰富,讲解透彻,便于学生自学。
5)通过课程设计的综合训练,使学生在学习理论知识的同时,进一步提高解决实际问题的能力,进一步强化综合应用训练,熟练掌握利用计算机解决问题的一般步骤。
6)通过典型算法设计的分析,使学生所学的知识更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
7)为方便教师教学,本书配有电子教案和习题答案,可登录华章网站(www.hzbook.com)下载或发送邮件至xfs@dzu.edu.cn与作者联系。
在编写中我们参阅了许多数据结构教材和相关资料,在此向其作者一并表示感谢。本教材的出版得到了德州学院教材出版基金的资助。最后,还要特别感谢机械工业出版社华章分社的大力支持,使得本书得以顺利出版。
限于作者水平,书中不当和疏漏之处在所难免,敬请读者不吝指正。
作者
计算机\数据结构
数据结构课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们参考了大量数据结构的教材,并结合作者多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生数据结构课程的教材。数据结构是一门应用性非常强的课程,必须在掌握了各种数据结构的基础上,尽可能多地上机练习。本书的编写突出了课程学科能力的培养,体现了兼顾“理论和应用”的教学改革理念。在第1版的基础上,第2版增加了几个重要数据结构的具体实例。
本书具有以下特色:
重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
通过典型算法设计的分析,使学生对所学知识的掌握更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
通过课程设计的综合训练,进一步提高学生解决实际问题的能力。
本书为教师提供教学课件、习题答案以及所有算法的调试程序,有需要者可登录华章网站(www.hzbook.com)下载。
前言
教学建议
第1章绪论
11数据结构的研究对象
12数据结构的发展概况
13基本概念与术语
14数据类型与抽象数据类型
141数据类型
142抽象数据类型
143抽象数据类型的表示与实现
15算法与算法分析
151算法
152算法设计的原则
153算法效率的衡量方法和准则
154算法的存储空间需求
16典型例题
17上机实验
18小结
习题
第2章线性表
21线性表的定义
211线性表的概念
212线性表的抽象数据类型定义
22线性表的顺序表示与实现
221线性表的顺序表示
222线性表的顺序实现
223顺序表的应用举例
23线性表的链式表示与实现
231单链表
232双向链表
233循环链表
234静态链表
235链表的应用举例
24典型例题
25上机实验
26小结
习题
第3章栈与队列
31栈
311栈的抽象数据类型定义
312栈的表示与实现
32栈的应用举例
321数制转换
322括号匹配的检验
323表达式求值
324求命题公式的真值
33栈与递归实现
331递归的定义
332递归与栈的关系
333递归的实现
334用递归求所有出栈序列
335递归的消除
34队列
341队列的抽象数据类型定义
342队列的链式表示与实现
343队列的顺序表示与实现——循环队列
344队列的应用举例
35典型例题
36上机实验
37小结
习题
第4章串
41串的定义
42串的表示与实现
421串的顺序存储表示
422串的链式存储表示
43串的模式匹配
431简单匹配算法
432首尾匹配算法
433KMP算法
44典型例题
45上机实验
46小结
习题
第5章数组与广义表
51数组的定义
52数组的顺序存储
53矩阵的压缩存储
531特殊矩阵
532稀疏矩阵
54广义表
541广义表的定义
542广义表的存储结构
55典型例题
56上机实验
57小结
习题
第6章树与二叉树
61树的定义
611树的概念与术语
612树的逻辑表示方法
613树的抽象数据类型定义
62二叉树的定义
621二叉树的概念
622二叉树的重要性质
63二叉树的存储结构
631二叉树的顺序存储表示
632二叉树的链式存储表示
64二叉树的遍历
641二叉树遍历的概念
642二叉树遍历的递归算法
643二叉树遍历的非递归算法
644层次遍历算法
645遍历算法的应用举例
65二叉树的构造
66线索二叉树
661线索二叉树的定义
662线索链表的建立
663线索链表的遍历算法
67树和森林的表示方法
671双亲表示法
672孩子链表表示法
673孩子-兄弟链表表示法
674树、森林和二叉树的对应关系
68树和森林的遍历
681树的遍历
682森林的遍历
683树遍历算法的应用
69赫夫曼树与赫夫曼编码
691赫夫曼树的定义
692赫夫曼树的构造
693赫夫曼编码
610典型例题
611上机实验
612小结
习题
第7章图
71图的定义与术语
711图的相关术语
712图的抽象数据类型定义
72图的存储表示
721图的邻接矩阵存储表示
722图的邻接表存储表示
723有向图的十字链表存储表示
724无向图的邻接多重表存储表示
73图的遍历
731深度优先搜索遍历图
732广度优先搜索遍历图
733图遍历的应用举例
74最小生成树
741普里姆算法
742克鲁斯卡尔算法
75两点之间的最短路径问题
751从某个源点到其余各点的最短路径
752每一对顶点之间的最短路径
76拓扑排序
77关键路径
78典型例题
79上机实验
710小结
习题
第8章查找
81基本概念
82静态查找表
821顺序查找
822有序表查找
823索引查找
83动态查找树表
831二叉排序树
832平衡二叉树
833B-树
834B+树
835键树
84哈希表
841哈希表的概念
842哈希函数的构造方法
843处理冲突的方法
844哈希表的查找
845哈希表的插入操作
846哈希表的删除操作
85典型例题
86上机实验
87小结
习题
第9章排序
91概述
911什么是排序
912内部排序和外部排序
913内部排序的方法
92插入排序
921直接插入排序
922折半插入排序
923二路插入排序
924表插入排序
925希尔排序
93交换排序
931起泡排序
932快速排序
94选择排序
941简单选择排序
942堆排序
95归并排序
96基数排序
961多关键字排序
962链式基数排序
97各种排序方法的综合比较
98外排序简介
981外存信息的存取
982外排序的基本方法
99典型例题
910上机实验
911小结
习题
第10章文件
101文件的基本概念
1011什么是文件
1012文件的逻辑结构及操作
1013文件的存储结构
102顺序文件
103索引文件
1031ISAM文件
1032VSAM文件
104哈希文件
105多关键字文件
1051多重表文件
1052倒排文件
1053倒排文件的应用
106典型例题
107上机实验
108小结
习题
第11章课程设计举例
111通讯录管理
112停车场管理
113文本文件的检索
114导师制问题
115家谱管理
116教学计划安排
参考文献