前言
“数据结构”是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,同时已成为其他理工科专业的热门课程。学好该课程,不仅对学习后续算法设计、数值分析、操作系统、编译原理等课程有很大帮助,而且在实际中有广泛的用途。
数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现。它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧。
“数据结构”课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们在参考各种数据结构教材的基础上,结合作者多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生的数据结构教材。本书的编写突出了课程学科能力的培养,体现了“理论和应用”兼顾的教学改革理念。
本书分为11章:第1章绪论,介绍数据、数据结构、抽象数据类型等基本概念,特别是算法分析的方法;第2章线性表,介绍线性表的两种存储结构(顺序表和链表)的逻辑结构与基本运算的实现过程;第3章栈与队列,介绍两种特殊的线性结构的概念与应用;第4章串,介绍串的概念与模式匹配算法;第5章数组与广义表,介绍数组和稀疏矩阵的概念及相关运算的实现,以及广义表的存储结构及相关运算的实现;第6章树与二叉树,介绍树与二叉树的概念和各种运算的实现过程,其中特别突出二叉树的各种递归和非递归算法;第7章图,介绍图的基本概念和各种运算的实现过程;第8章查找,介绍各种常用查找算法的实现过程;第9章排序,介绍各种常用排序算法的实现过程;第10章文件,介绍常用的文件结构;第11章课程设计举例,给出了几个重要数据结构的具体实例。
数据结构是一门应用性非常强的课程,必须在掌握了各种数据结构的基础上,尽可能多地上机练习。为此,本书每章后面都配有相应的上机实验题。
全书采用C语言作为数据结构和算法的描述语言,所有算法均在VC++环境下调试通过。
本书具有以下特色:
1)语言通俗易懂,阐述简洁明了。
2)重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
3)为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
4)算法丰富,讲解透彻,便于学生自学。
5)通过课程设计的综合训练,使学生在学习理论知识的同时,进一步提高解决实际问题的能力,进一步强化综合应用训练,熟练掌握利用计算机解决问题的一般步骤。
6)通过典型算法设计的分析,使学生所学的知识更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
目录
第1章绪论
1 1数据结构的研究对象
1 2数据结构的发展概况
1 3基本概念与术语
1 4数据类型与抽象数据类型
1 4 1数据类型
1 4 2抽象数据类型
1 4 3抽象数据类型的表示与实现
1 5算法与算法分析
1 5 1算法
1 5 2算法设计的原则
1 5 3算法效率的衡量方法和准则
1 5 4算法的存储空间需求
1 6典型例题
1 7上机实验
1 8小结
习题
第2章线性表
2 1线性表的定义
2 1 1线性表的概念
2 1 2线性表的抽象数据类型定义
2 2线性表的顺序表示与实现
2 2 1线性表的顺序表示
2 2 2线性表的顺序实现
2 2 3顺序表的应用举例
2 3线性表的链式表示与实现
2 3 1单链表
2 3 2双向链表
2 3 3循环链表
2 3 4静态链表
2 3 5链表的应用举例
2 4典型例题
2 5上机实验
2 6小结
习题
第3章栈与队列
3 1栈
3 1 1栈的抽象数据类型定义
3 1 2栈的表示与实现
3 2栈的应用举例
3 2 1数制转换
3 2 2括号匹配的检验
3 2 3表达式求值
3 2 4求命题公式的真值
3 3栈与递归实现
3 3 1递归的定义
3 3 2递归与栈的关系
3 3 3递归的实现
3 3 4用递归求所有出栈序列
3 3 5递归的消除
3 4队列
3 4 1队列的抽象数据类型定义
3 4 2队列的链式表示与实现
3 4 3队列的顺序表示与实现——循环队列
3 4 4队列的应用举例
3 5典型例题
3 6上机实验
3 7小结
习题
第4章串
4 1串的定义
4 2串的表示与实现
4 2 1串的顺序存储表示
4 2 2串的链式存储表示
4 3串的模式匹配
4 3 1简单匹配算法
4 3 2首尾匹配算法
4 3 3KMP算法
4 4典型例题
4 5上机实验
4 6小结
习题