数据结构:基于C语言的描述pdf下载pdf下载

数据结构:基于C语言的描述百度网盘pdf下载

作者:
简介:本篇主要提供数据结构:基于C语言的描述pdf下载
出版社:清华大学出版社
出版时间:2019-10
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

本书是为“数据结构”课程编写的教材。系统地介绍了数据结构基础理论知识及算法设计方法,前半部分从抽象数据类型角度讨论了各种基本类型的数据结构及其应用,主要包括:线性表、栈和队列、串、数组和广义表、树与二叉树及图。

内容简介

  《数据结构:基于C语言的描述/高等学校电子信息类专业系列教材》系统地介绍数据结构基础理论知识及算法设计,第1~7章从抽象数据类型的角度讨论各种基本类型的数据结构及其应用,主要包括线性表、栈和队列、串、数组和广义表、树和二叉树及图;第8章和第9章主要讨论查找和排序的各种实现方法及其综合比较;第10章介绍不同类型文件的基本操作方法;第11章介绍数据结构课程实验的目的、步骤及内容;附录给出全书习题的参考答案。全书采用类C语言作为数据结构和算法的描述语言,随书配备电子教案,以及第11章实验的源代码。
  该书在内容选取上符合人才培养目标的要求及教学规律和认知规律,在组织编排上体现“先理论、后应用、理论与应用相结合”的原则,并兼顾学科的广度和深度,力求适用面广。
  《数据结构:基于C语言的描述/高等学校电子信息类专业系列教材》具有结构严谨、层次清楚、概念准确、深入浅出、描述清晰等特点。
  《数据结构:基于C语言的描述/高等学校电子信息类专业系列教材》可作为计算机类专业和信息类相关专业的本科或专科教材,也可供从事计算机工程与应用工作的科技工作者参考。

作者简介

  彭波,中国农业大学教授,博士生导师,主讲“数据结构”“算法设计与分析”“C语言程序设计”“多媒体技术”等课程,主编《数据结构》《数据结构及算法》《多媒体技术教程》《Java编程技术全接触》《程序设计》等教材。长期从事计算机科学与技术方面的教学及科研工作,主持和参加多项国家科技支撑计划课题,曾获得宝钢教育基金奖优秀教师、中国农业大学杰出教师等荣誉称号。

内页插图

目录

第1章 绪论
1.1 数据结构的范畴
1.1.1 计算机处理问题的分类
1.1.2 非数值性问题的求解
1.2 数据结构发展的概况
1.3 数据结构相关的概念
1.3.1 数据的概念
1.3.2 结构的概念
1.3.3 类型的概念
1.4 算法描述与算法分析
1.4.1 算法的概念
1.4.2 算法描述
1.4.3 算法分析
习题

第2章 线性表
2.1 线性表的类型定义
2.1.1 线性表的定义
2.1.2 线性表的抽象数据类型
2.2 线性表的顺序表示及操作实现
2.2.1 顺序表的定义
2.2.2 顺序表的操作实现
2.3 线性表的链式表示及操作实现
2.3.1 单链表的定义
2.3.2 单链表的操作实现
2.3.3 循环链表
2.3.4 双向链表
2.3.5 静态链表
2.4 线性表两种存储表示的比较
2.4.1 基于空间的比较
2.4.2 基于时间的比较
习题

第3章 栈和队列
3.1 栈
3.1.1 栈的类型定义
3.1.2 栈的存储表示及操作实现
3.1.3 栈与递归问题
3.2 队列
3.2.1 队列的类型定义
3.2.2 队列的存储表示及操作实现
习题

第4章 串
4.1 串的类型定义
4.1.1 串的定义
4.1.2 串的抽象数据类型
4.2 串的存储表示及操作实现
4.2.1 定长顺序存储表示
4.2.2 堆分配存储表示
4.2.3 串的块链存储表示
4.3 串的模式匹配
4.3.1 简单的模式匹配方法——BF算法
4.3.2 改进的模式匹配方法——KMP算法
习题

第5章 数组和广义表
5.1 数组
5.1.1 数组的类型定义
5.1.2 数组的顺序表示及操作实现
5.2 矩阵的压缩存储
5.2.1 特殊矩阵的压缩存储
5.2.2 稀疏矩阵的压缩存储
5.3 广义表
5.3.1 广义表的类型定义
5.3.2 广义表的链式表示及操作实现
习题

第6章 树和二叉树
6.1 树
6.1.1 树的类型定义
6.1.2 树的存储表示及操作实现
6.2 二叉树
6.2.1 二叉树的类型定义
6.2.2 二叉树的重要性质
6.2.3 二叉树的存储表示及操作实现
6.2.4 线索二叉树
6.3 树和森林与二叉树的转换
6.3.1 树与二叉树的转换
6.3.2 森林与二叉树的转换
6.4 哈夫曼树及其应用
6.4.1 哈夫曼树
6.4.2 哈夫曼编码
习题

第7章 图
7.1 图的类型定义
7.1.1 图的定义
7.1.2 图的抽象数据类型
7.1.3 图的遍历
7.2 图的存储表示与操作实现
7.2.1 邻接矩阵
7.2.2 邻接表
7.2.3 十字链表
7.2.4 邻接多重表
7.2.5 图的操作实现
7.3 图的连通性及其应用
7.3.1 无向图的连通分量
7.3.2 生成树和生成森林
7.3.3 最小生成树
7.4 有向无环图及其应用
7.4.1 拓扑排序
7.4.2 关键路径
7.5 最短路径
7.5.1 单源最短路径
7.5.2 其他最短路径
习题

第8章 查找
8.1 查找的基本概念
8.2 静态查找表
8.2.1 静态查找表的类型定义
8.2.2 顺序表的查找
8.2.3 有序表的查找
8.2.4 索引顺序表的查找
8.3 动态查找表
8.3.1 动态查找表的类型定义
8.3.2 二叉排序树和平衡二叉树
8.3.3 B_树、B+树和键树
8.4 哈希表
8.4.1 哈希表的定义
8.4.2 哈希函数的构造
8.4.3 处理冲突的方法
8.4.4 哈希表上的查找
习题

第9章 排序
9.1 排序的基本概念
9.2 插入排序
9.2.1 直接插入排序
9.2.2 希尔排序
9.3 交换排序
9.3.1 冒泡排序
9.3.2 快速排序
9.4 选择排序
9.4.1 简单选择排序
9.4.2 堆排序
9.5 归并排序
9.5.1 2-路归并排序
9.5.2 归并排序
9.6 基数排序
9.6.1 多关键字排序
9.6.2 链式基数排序
9.7 排序方法比较
习题

第10章 文件
10.1 文件的基本概念
10.2 顺序文件
10.2.1 顺序文件的查找
10.2.2 顺序文件的修改
10.2.3 顺序文件的特点
10.3 索引文件
10.3.1 索引文件的分类
10.3.2 索引文件的存储
10.3.3 索引文件的操作
10.3.4 利用查找表建立多级索引
10.4 索引顺序文件
10.4.1 ISAM文件
10.4.2 VSAM文件
10.5 哈希文件
10.5.1 哈希文件的操作
10.5.2 哈希文件的特点
10.6 多关键字文件
10.6.1 多重表文件
10.6.2 倒排文件
10.7 文件综合举例
习题

第11章 课程实验
11.1 实验概述
11.1.1 教学目的
11.1.2 实验步骤
11.2 实验内容
11.2.1 线性表
11.2.2 栈和队列
11.2.3 串
11.2.4 数组和广义表
11.2.5 树和二叉树
11.2.6 图
11.2.7 查找
11.2.8 排序

附录 习题参考答案

精彩书摘

第3章

CHAPTER 3



栈 和 队 列







主要知识点

 栈和队列的类型定义。

 栈的存储表示及基于存储结构的基本操作实现。

 队列的存储表示及基于存储结构的基本操作实现。

栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限制的线性表,因此可以称为限定性的数据结构。但从数据类型的角度看,它们是和线性表大不相同的两类抽象数据类型。栈和队列在操作系统、编译原理及大型应用软件系统中得到了广泛的应用。

3.1栈

栈的特点在于其基本操作的特殊性,即它必须按照“后进先出”的规则进行操作。与线性表相比,其插入和删除操作受到更多的约束和限定。

3.1.1栈的类型定义

在日常生活中,有很多“后进先出”的例子。例如,把餐厅里洗净的一摞碗看作一个栈。通常,后洗净的碗总是摞在先洗净的碗上面,最后洗净的碗摞在最上面; 而使用时却是从这摞碗顶端拿取,即后洗净的先取用。栈的操作特点正是上述实际的抽象。

1. 栈的定义

栈(Stack)是限定仅可以在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(Top),栈顶将随着栈中数据元素的增减而浮动,且通过栈顶指针指明当前数据元素位置; 不允许插入和删除的一端称为栈底(Bottom),栈底指针并不随着栈中数据元素的增减而移动,它是固定的。不含任何数据元素的栈称为空栈(Empty Stack)。




图31栈的示意图




如图31所示,栈中有3个数据元素,插入元素(也称入栈)顺序是a1、a2、a3,当需要删除元素(也称出栈)时,其顺序只能为a3、a2、a1。换言之,在任何时候出栈的数据元素都只能是栈顶元素,即最后入栈者最先出栈,所以栈中元素除了具有线性关系外,还具有后进先出(Last In First Out,LIFO)的特性。栈也可以简称为LIFO表。



图32所示的铁路调度站A是一个栈。车辆由轨道B进入调度站A,调度站A中的车辆从轨道C离去; 后进入调度站A的车辆将先调出。



图32铁路调度示意图



在程序设计语言中,也有很多栈的应用例子。例如,在对程序设计语言编写的源程序进行编译时,类似于表达式括号匹配问题就是用栈来解决的。又如,计算机系统在处理子程序之间的调用关系时,用栈来保存处理执行过程中的调用层次,等等。


前言/序言

  “数据结构”课程是计算机、电子信息类及相关专业的专业基础。它在整个课程体系中处于承上启下的核心地位:一方面扩展和深化在离散数学、程序设计语言等课程学到的基本技术和方法;另一方面为进一步学习操作系统、编译原理、数据库等专业知识奠定坚实的理论与实践基础。本课程在教给学生数据结构设计和算法设计的同时,培养学生的抽象思维能力、逻辑推理能力和形式化思维方法,增强分析问题、解决问题和总结问题的能力,更重要的是培养专业兴趣,树立创新意识。本书在内容选取上符合人才培养目标的要求及教学规律和认知规律,在组织编排上体现“先理论、后应用、理论与应用相结合”的原则,并兼顾学科的广度和深度,力求适用面广泛。
  全书共分11章。第1章综述数据、数据结构和抽象数据类型等基本概念及算法描述与分析方法;第2~7章主要从抽象数据类型的角度分别讨论线性表、栈和队列、串、数组和广义表、树和二叉树、图等基本类型的数据结构及其应用;第8章和第9章讨论查找和排序的各种方法,着重从时间性能、应用场合及使用范围方面进行分析和比较;第10章主要介绍顺序文件、索引文件、索引顺序文件、哈希文件、多关键字文件的基本操作方法;第11章介绍数据结构课程实验的目的、步骤及内容。本书对数据结构众多知识点的来龙去脉做了详细解释和说明;每章后面配有难度各异的适量习题,并在附录中给出习题的参考答案,供读者理解知识及复习提高之用。随书配备电子教案,以及第11章实验的源代码。
  全书采用类C语言描述数据结构和操作算法。类C语言是C语言的一个精选子集,同时又采用了C++对C非面向对象的增强功能,使本书对各种抽象数据类型的定义和与数据结构相关的操作算法的描述更加简明清晰,可读性更好,既不拘泥于C语言的细节,又容易转换成能够上机执行的C程序或C++程序。
  从课程性质上讲,“数据结构”是高等院校计算机科学、电子信息科学及相关专业考试计划中的一门专业基础课;其教学要求是学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时空分析技术。从课程学习上讲,“数据结构”的学习是复杂程序设计的训练过程;其教学目的是着眼于原理与应用的结合,在深化理解和灵活掌握教学内容的基础上,学会把知识用于解决实际问题,书写出符合软件工程规范的文件,编写出结构清晰及正确易读的程序代码。可以说,“数据结构”比“高级程序设计语言”等课程有着更高的要求,它更注重培养学生分析抽象数据的能力。