编辑推荐
《数据结构与算法:C语言版》:语言通俗易懂,阐述简洁明了。
重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
算法丰富,讲解透彻,便于学生自学。
通过典型算法设计的分析,使学生对所学知识的掌握更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
数据结构课程的特点是概念多、算法灵活和抽象性强。针对这种情况,作者在参考各种数据结构教材的基础上,结合多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生数据结构课程的教材。《数据结构与算法:C语言版》的编写突出了课程学科能力的培养,体现了兼顾"理论和应用"的教学改革理念。
内容简介
书籍 计算机书籍
本书共10章,一方面,涵盖数据结构的基本概念,定义了线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、排序等各种结构的抽象数据类型,并给出了相应操作的实现算法;另一方面,采用C语言描述算法,并给出了各种算法的效率分析,以及这些结构在计算机科学及其他领域的应用。此外,每章后均配有典型例题、上机实验和习题。本书中的所有算法均在VC++环境下调试通过。<BR>本书在内容安排上,突出由浅入深、循序渐进、通俗易懂的特点,算法分析透彻,讲解清晰,便于学生自学。为了激发学生的学习兴趣,培养学生解决实际问题的能力,书中融入了一些典型的应用实例,如命题公式真值表的求解算法、出栈序列的求解算法等。<BR>本书可作为高等院校计算机及相关专业本科生的“数据结构”课程教材,也可供相关科技人员学习参考。 <BR>
目录
前言<BR>教学建议<BR>第1章 绪论<BR>1.1 数据结构的研究对象<BR>1.2 数据结构的发展概况<BR>1.3 基本概念与术语<BR>1.4 数据类型与抽象数据类型<BR>1.4.1 数据类型<BR>1.4.2 抽象数据类型<BR>1.4.3 抽象数据类型的表示与实现<BR>1.5 算法与算法分析<BR>1.5.1 算法<BR>1.5.2 算法设计的原则<BR>1.5.3 算法效率的衡量方法和准则<BR>1.5.4 算法的存储空间需求<BR>1.6 典型例题<BR>1.7 上机实验<BR>习题<BR>第2章 线性表<BR>2.1 线性表的定义<BR>2.1.1 线性表的概念<BR>2.1.2 线性表的抽象数据类型定义<BR>2.2 线性表的顺序表示与实现<BR>2.2.1 线性表的顺序表示<BR>2.2.2 线性表的顺序实现<BR>2.2.3 顺序表的应用举例<BR>2.3 线性表的链式表示与实现<BR>2.3.1 单链表<BR>2.3.2 双向链表<BR>2.3.3 循环链表<BR>2.3.4 静态链表<BR>2.3.5 链表的应用举例<BR>2.4 典型例题<BR>2.5 上机实验<BR>习题<BR>第3章 栈与队列<BR>3.1 栈<BR>3.1.1 栈的抽象数据类型定义<BR>3.1.2 栈的表示与实现<BR>3.2 栈的应用举例<BR>3.2.1 数制转换<BR>3.2.2 括号匹配的检验<BR>3.2.3 表达式求值<BR>3.2.4 求命题公式的真值<BR>3.3 栈与递归实现<BR>3.3.1 递归的定义<BR>3.3.2 递归与栈的关系<BR>3.3.3 递归的实现<BR>3.3.4 用递归求所有出栈序列<BR>3.3.5 递归的消除<BR>3.4 队列<BR>3.4.1 队列的抽象数据类型定义<BR>3.4.2 队列的链式表示与实现<BR>3.4.3 队列的顺序表示与实现——循环队列<BR>3.4.4 队列的应用举例<BR>3.5 典型例题<BR>3.6 上机实验<BR>习题<BR>第4章 串<BR>4.1 串的定义<BR>4.2 串的表示与实现<BR>4.2.1 串的顺序存储表示<BR>4.2.2 串的链式存储表示<BR>4.3 串的模式匹配<BR>4.3.1 简单匹配算法<BR>4.3.2 首尾匹配算法<BR>4.3.3 KMP算法<BR>4.4 典型例题<BR>4.5 上机实验<BR>习题<BR>第5章 数组与广义表<BR>5.1 数组的定义<BR>5.2 数组的顺序存储<BR>5.3 矩阵的压缩存储<BR>5.3.1 特殊矩阵<BR>5.3.2 稀疏矩阵<BR>5.4 广义表<BR>5.4.1 广义表的定义<BR>5.4.2 广义表的存储结构<BR>5.5 典型例题<BR>5.6 上机实验<BR>习题<BR>第6章 树与二叉树<BR>6.1 树的定义<BR>6.1.1 树的概念与术语<BR>6.1.2 树的逻辑表示方法<BR>6.1.3 树的抽象数据类型定义<BR>6.2 二叉树的定义<BR>6.2.1 二叉树的概念<BR>6.2.2 二叉树的重要性质<BR>6.3 二叉树的存储结构<BR>6.3.1 二叉树的顺序存储表示<BR>6.3.2 二叉树的链式存储表示<BR>6.4 二叉树的遍历<BR>6.4.1 二叉树遍历的概念<BR>6.4.2 二叉树遍历的递归算法<BR>6.4.3 二叉树遍历的非递归算法<BR>6.4.4 层次遍历算法<BR>6.4.5 遍历算法的应用举例<BR>6.5 二叉树的构造<BR>6.6 线索二叉树<BR>6.6.1 线索二叉树的定义<BR>6.6.2 线索链表的建立<BR>6.6.3 线索链表的遍历算法<BR>6.7 树和森林的表示方法<BR>6.7.1 双亲表示法<BR>6.7.2 孩子链表表示法<BR>6.7.3 孩子-兄弟链表表示法<BR>6.7.4 树、森林和二叉树的对应关系<BR>6.8 树和森林的遍历<BR>6.8.1 树的遍历<BR>6.8.2 森林的遍历<BR>6.8.3 树遍历算法的应用<BR>6.9 赫夫曼树与赫夫曼编码<BR>6.9.1 赫夫曼树的定义<BR>6.9.2 赫夫曼树的构造<BR>6.9.3 赫夫曼编码<BR>6.10 典型例题<BR>6.11 上机实验<BR>习题<BR>第7章 图<BR>7.1 图的定义与术语<BR>7.1.1 图的相关术语<BR>7.1.2 图的抽象数据类型定义<BR>7.2 图的存储表示<BR>7.2.1 图的邻接矩阵存储表示<BR>7.2.2 图的邻接表存储表示<BR>7.2.3 有向图的十字链表存储表示<BR>7.2.4 无向图的邻接多重表存储表示<BR>7.3 图的遍历<BR>7.3.1 深度优先搜索遍历图<BR>7.3.2 广度优先搜索遍历图<BR>7.3.3 图遍历的应用举例<BR>7.4 最小生成树<BR>7.4.1 普里姆算法<BR>7.4.2 克鲁斯卡尔算法<BR>7.5.两点之间的最短路径问题<BR>7.5.1 从某个源点到其余各点的最短路径<BR>7.5.2 每一对顶点之间的最短路径<BR>7.6 拓扑排序<BR>7.7 关键路径<BR>7.8 典型例题<BR>7.9 上机实验<BR>习题<BR>第8章 查找<BR>8.1 基本概念<BR>8.2 静态查找表<BR>8.2.1 顺序查找<BR>8.2.2 有序表查找<BR>8.2.3 索引查找<BR>8.3 动态查找树表<BR>8.3.1 二叉排序树<BR>8.3.2 平衡二叉树<BR>8.3.3 B-树<BR>8.3.4 B+树<BR>8.3.5 键树<BR>8.4 哈希表<BR>8.4.1 哈希表的概念<BR>8.4.2 哈希函数的构造方法<BR>8.4.3 处理冲突的方法<BR>8.4.4 哈希表的查找<BR>8.4.5 哈希表的插入操作<BR>8.4.6 哈希表的删除操作<BR>8.5 典型例题<BR>8.6 上机实验<BR>习题<BR>第9章 排序<BR>9.1 概述<BR>9.1.1 什么是排序<BR>9.1.2 内部排序和外部排序<BR>9.1.3 内部排序的方法<BR>9.2 插入排序<BR>9.2.1 直接插入排序<BR>9.2.2 折半插入排序<BR>9.2.3 二路插入排序<BR>9.2.4 表插入排序<BR>9.2.5 希尔排序<BR>9.3 交换排序<BR>9.3.1 起泡排序<BR>9.3.2 快速排序<BR>9.4 选择排序<BR>9.4.1 简单选择排序<BR>9.4.2 堆排序<BR>9.5 归并排序<BR>9.6 基数排序<BR>9.6.1 多关键字排序<BR>9.6.2 链式基数排序<BR>9.7 各种排序方法的综合比较<BR>9.8 外排序简介<BR>9.8.1 外存信息的存取<BR>9.8.2 外排序的基本方法<BR>9.9 典型例题<BR>9.10 上机实验<BR>习题<BR>第10章 文件<BR>10.1 文件的基本概念<BR>10.1.1 什么是文件<BR>10.1.2 文件的逻辑结构及操作<BR>10.1.3 文件的存储结构<BR>10.2 顺序文件<BR>10.3 索引文件<BR>10.3.1 ISAM文件<BR>10.3.2 VSAM文件<BR>10.4 哈希文件<BR>10.5 多关键字文件<BR>10.5.1 多重表文件<BR>10.5.2 倒排文件<BR>10.5.3 倒排文件的应用<BR>10.6 典型例题<BR>10.7 上机实验<BR>习题<BR>参考文献<BR>
前言
“数据结构”是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,而且已成为其他理工科专业的热门课程。学好该课程,不仅对其后续算法设计、数值分析、操作系统、编译原理等课程的学习有很大帮助,而且在实际中有广泛的用途。
数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现。它不仅为计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧。
“数据结构”课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们在参考各种数据结构教材的基础上,结合作者多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生的数据结构教材。该教材的编写突出了课程学科能力的培养,体现了兼顾“理论和应用”的教学改革理念。
本书分为10章,第1章绪论,介绍数据、数据结构、抽象数据类型等基本概念,特别是算法分析的方法;第2章线性表,介绍线性表的两种存储结构(顺序表和链表)的逻辑结构与基本运算的实现过程;第3章栈与队列,介绍两种特殊的线性结构的概念与应用;第4章串,介绍串的概念与模式匹配算法;第5章数组与广义表,介绍数组和稀疏矩阵的概念及相关运算的实现,以及广义表的存储结构及相关运算的实现;第6章树与二叉树,介绍树与二叉树的概念和各种运算的实现过程,其中特别突出二叉树的各种递归和非递归算法;第7章图,介绍图的基本概念和各种运算的实现过程;第8章查找,介绍各种常用查找算法的实现过程;第9章排序,介绍各种常用排序算法的实现过程;第10章文件,介绍常用的文件结构。
数据结构是一门应用性非常强的课程,必须在掌握了各种数据结构的基础上,尽可能多地上机练习。为此,本书每章后面都配有相应的上机实验题。
全书采用C语言作为数据结构和算法的描述语言,所有算法均在VC++环境下调试通过。
本书由徐凤生教授任主编。其中,第1章至第4章和第6章至第9章由徐凤生编写,第5章由戎丽霞编写,第10章由李天志编写。最后,全书由徐凤生统稿并定稿。
本书具有以下特色:
1)语言通俗易懂,阐述简洁明了。
2)重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
3)为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
4)算法丰富,讲解透彻,便于学生自学。
5)通过典型算法设计的分析,使学生所学知识更加系统化和条理化,更易于对所学知识融会贯通和举一反三。
6)为方便教师教学,本书配有电子教案和习题答案,可登录华章网站(www.hzbook.com)下载或发送邮件至xfs@dzu.edu.cn与作者联系。
在编写中我们参阅了许多数据结构教材和相关资料,在此向其作者一并表示感谢。本教材的出版得到了德州学院教材出版基金的资助。最后,还要特别感谢机械工业出版社华章公司的大力支持,使得本书得以顺利出版。
限于作者水平,书中不当和疏漏之处在所难免,敬请读者不吝指正。
编者