高等学校数据结构课程系列教材数据结构简明教程(第2版 微课版)/王芳荣
- ISBN:9787302516309
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:375
- 出版时间:2019-01-01
- 条形码:9787302516309 ; 978-7-302-51630-9
本书特色
本书是作者针对数据结构课程的特点,在总结自己长期教学经验的基础上编写的,本书的“简明”性主要体现在以下两个方面。 内容上的简明性。本书的内容基本涵盖了*新全国计算机专业联考大纲数据结构部分的知识点,讲授上省去了一些难度较大的应用和扩展内容,如表达式求值和迷宫问题、串的KMP 算法和广义表等。 20小时微课视频讲解,涵盖了*新全国计算机专业联考大纲数据结构部分的知识点401道练习题,118道上机实验题,141个微课视频教学课件、教学大纲、源码及试卷 所有算法都用C/C++语言编写并上机调试
内容简介
本书内容包括概论、线性表、栈和队列、串、数组和稀疏矩阵、树和二叉树、图、查找和排序,附录中给出了书中全部算法代码清单和2018年全国计算机专业数据结构考研大纲。 本书具有概念清楚、表述明晰、示例丰富、图示准确和内容完整等特点,尤其注重知识点之间结构关系的展示和通用算法设计方法的提炼。每个知识点都提供了配套的微课视频。 本书可用作高等院校计算机及相关专业本、专科生数据结构课程的教材,也适合计算机爱好者和参加各类计算机考试的人员研习。
目录
目录
第1章概论
1.1数据结构概述
1.1.1什么是数据结构
1.1.2逻辑结构
1.1.3存储结构
1.1.4数据运算
1.1.5数据结构、数据类型和抽象数据类型
1.2算法和算法分析
1.2.1算法及其描述
1.2.2算法分析
1.3数据结构程序设计
1.3.1数据结构程序设计步骤
1.3.2应用程序的结构
小结
练习题1
上机实验题1
第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.4.1双链表的定义
2.4.2线性表基本运算在双链表上的实现
2.4.3双链表的算法设计示例
2.4.4循环双链表
2.4.5循环双链表的算法设计示例
2.5线性表的应用
2.5.1设计线性表应用程序的一般步骤
2.5.2线性表应用示例
小结
练习题2
上机实验题2
第3章栈和队列
3.1栈
3.1.1栈的基本概念
3.1.2栈的顺序存储结构
3.1.3栈的链式存储结构
3.1.4栈的应用示例
3.2队列
3.2.1队列的基本概念
3.2.2队列的顺序存储结构
3.2.3队列的链式存储结构
3.2.4队列的应用示例
小结
练习题3
上机实验题3
第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链串的定义
4.3.2串基本运算在链串上的实现
4.3.3链串的算法设计示例
4.4串的应用
小结
练习题4
上机实验题4
第5章数组和稀疏矩阵
5.1数组
5.1.1数组的定义
5.1.2数组的存储结构
5.1.3数组的算法设计示例
5.2特殊矩阵的压缩存储
5.3稀疏矩阵
5.3.1稀疏矩阵的三元组表示
5.3.2稀疏矩阵的十字链表表示
小结
练习题5
上机实验题5
第6章树和二叉树
6.1树
6.1.1树的定义
6.1.2树的逻辑结构表示
6.1.3树的基本术语
6.1.4树的性质
6.1.5树的基本运算
6.1.6树的存储结构
6.2二叉树
6.2.1二叉树的定义
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3递归算法设计方法
6.3.1什么是递归
6.3.2递归算法设计一般方法
6.3.3二叉树的递归算法设计
6.4二叉树的基本运算算法
6.4.1二叉树的基本运算
6.4.2二叉树基本运算实现算法
6.5二叉树的遍历
6.5.1常用的二叉树遍历算法
6.5.2遍历算法的应用
6.6二叉树的构造
6.6.1什么是二叉树的构造
6.6.2二叉树的构造方法
6.7二叉树与树之间的转换
6.7.1森林/树转换成二叉树
6.7.2二叉树还原为树/森林
6.8线索二叉树
6.8.1什么是线索
6.8.2线索二叉树的存储结构
6.8.3建立线索二叉树及其销毁
6.8.4线索二叉树的基本运算算法
6.9哈夫曼树
6.9.1哈夫曼树的定义
6.9.2构造哈夫曼树
6.9.3哈夫曼编码
小结
练习题6
上机实验题6
第7章图
7.1图的基本概念
7.1.1图的定义
7.1.2图的基本术语
7.1.3图的基本操作
7.2图的存储结构
7.2.1邻接矩阵
7.2.2邻接表
7.3图的遍历
7.3.1深度优先遍历算法
7.3.2广度优先遍历算法
7.3.3图遍历算法的应用
7.4生成树和*小生成树
7.4.1什么是图的生成树和*小生成树
7.4.2普里姆算法
7.4.3克鲁斯卡尔算法
7.5*短路径
7.5.1单源*短路径算法
7.5.2多源*短路径算法
7.6拓扑排序
7.7AOE网与关键路径
小结
练习题7
上机实验题7
第8章查找
8.1查找的概念
8.2静态查找表
8.2.1顺序查找
8.2.2折半查找
8.2.3索引查找
8.3动态查找表
8.3.1二叉排序树
8.3.2二叉平衡树
8.3.3B树
8.3.4B+树
8.4哈希表
8.4.1哈希表的基本概念
8.4.2哈希函数构造方法
8.4.3哈希冲突解决方法
8.4.4哈希表查找及性能分析
小结
练习题8
上机实验题8
第9章排序
9.1排序的基本概念
9.2插入排序
9.2.1直接插入排序
9.2.2折半插入排序
9.2.3希尔排序
9.3交换排序
9.3.1冒泡排序
9.3.2快速排序
9.4选择排序
9.4.1简单选择排序
9.4.2堆排序
9.5归并排序
9.6基数排序
9.7外排序
9.7.1磁盘排序过程
9.7.2生成初始归并段
9.7.3多路平衡归并
9.7.4*佳归并树
小结
练习题9
上机实验题9
附录
附录A书中部分算法清单
附录B全国计算机专业数据结构2018年联考大纲
参考文献
节选
第3章栈和队列 栈和队列是两种特殊的线性表。从数据逻辑结构角度看,栈和队列的元素均呈现一种线性关系; 从运算的角度看,栈和队列是操作受限的线性表。本章介绍栈和队列的概念、存储结构和基本运算的实现算法。 3.1栈 3.1.1栈的基本概念 栈是一种特殊的线性表,其特殊性体现在元素插入和删除运算上,它的插入和删除运算仅限定在表的某一端进行,不能在表中间和另一端进行。允许进行插入和删除的一端称为栈顶,另一端称为栈底。栈的插入操作称为进栈(或入栈),删除操作称为出栈(或退栈)。处于栈顶位置的数据元素称为栈顶元素。不含任何数据元素的栈称为空栈。 正是这种受限的元素插入和删除运算,使得栈表现出先进后出或者后进先出的特点。举一个例子进行说明,假设有一个很窄的死胡同,胡同里能容纳若干人,但每次只能容许一个人进出。现有5个人,分别编号为①~⑤,按编号的顺序依次进入此死胡同,如图3.1(a)所示。此时若编号为④的人要退出死胡同,必须等⑤退出后才可以。若①要退出,则必须等到⑤、④、③、②依次都退出后才行,如图3.1(b)所示。这里人进出死胡同的原则是先进去的后出来。 图3.1死胡同示意图 在该例中,死胡同就看作是一个栈,栈顶相当于死胡同口,栈底相当于死胡同的另一端,进、出死胡同可看作进栈、出栈操作。插入栈的示意图如图3.2所示。 栈的基本运算主要包括以下6种。 (1) 初始化栈InitStack(st): 建立一个空栈st。 (2) 销毁栈DestroyStack(st): 释放栈st占用的内存空间。 (3) 进栈Push(st,x): 将元素x插入栈st中,使x成为栈st的栈顶元素。 (4) 出栈Pop(st,x): 当栈st不空时,将栈顶元素赋给x,并从栈中删除当前栈顶元素。 (5) 取栈顶元素GetTop(st,x): 若栈st不空,取栈顶元素x并返回1; 否则返回0。 (6) 判断栈空StackEmpty(st): 判断栈st是否为空栈。 包含基本运算的栈如图3.3所示,其中,op1~op6表示上述6个基本运算。 图3.2栈的示意图 图3.3包含基本运算的栈 【例3.1】设一个栈的输入序列为a、b、c、d,借助一个栈(假设栈大小足够大)所得到的出栈序列不可能是。 A. a、b、c、dB. b、d、c、aC. a、c、d、bD. d、a、b、c 解: a、b、c、d序列经过栈的情况如图3.4所示,根据栈的特点,很容易得出d、a、b、c是不可能的,因为d先出栈,说明a、b、c均已在栈中,按照进栈顺序,从栈顶到栈底的顺序应为c、b、a,出栈的顺序只能是d、c、b、a。所以不可能的出栈序列是D。 【例3.2】已知一个栈的进栈序列是1,2,3,…,n,其出栈序列是p1,p2,…,pn,若p1=n,则pi的值为。 A. iB. n-iC. n-i+1D. 不确定 解: p1=n,则出栈序列是唯一的,即为n,n-1,…,2,1,由此推出pi=n-i+1。本题答案为C。 【例3.3】元素a、b、c、d、e依次进入初始为空的栈中,假设栈大小足够大。若元素进栈后可停留、可立即出栈,直到所有的元素都出栈,则所有可能的出栈序列中,以元素d开头的出栈序列个数是。 A. 3B. 4C. 5D. 6 解: 若元素d**个出栈,a、b、c均在栈中,从栈顶到栈底的顺序应为c、b、a,如图3.5所示,此后合法的栈操作如下。 (1) e进栈,e出栈,c出栈,b出栈,a出栈,得到的出栈序列decba。 (2) c出栈,e进栈,e出栈,b出栈,a出栈,得到的出栈序列dceba。 (3) c出栈,b出栈,e进栈,e出栈,a出栈,得到的出栈序列dcbea。 (4) c出栈,b出栈,a出栈,e进栈,e出栈,得到的出栈序列dcbae。 以元素d开头的出栈序列个数为4,本题答案为B。 图3.4序列经过一个栈的情况 图3.5元素出栈的情况 3.1.2栈的顺序存储结构 栈是一种特殊的线性表,和线性表存储结构类似,栈也有两种存储结构: 顺序存储结构和链式存储结构。 栈的顺序存储结构称为顺序栈。顺序栈通常由一个一维数组data和一个记录栈顶元素位置的变量top组成。习惯上将栈底放在数组下标小的那端,栈顶元素由栈顶指针top所指向。顺序栈类型声明如下。 #define MaxSize 100//顺序栈的初始分配空间大小 typedef struct {ElemType data[MaxSize];//保存栈中元素,这里假设ElemType为char类型 int top;//栈顶指针 } SqStack; 在上述顺序栈定义中,ElemType为栈元素的数据类型,MaxSize为一个常量,表示data数组中*多可放的元素个数,data元素的下标范围为0~MaxSize-1。当top=-1时表示栈空; 当top=MaxSize-1时表示栈满。 图3.6说明了顺序栈st的几种状态(假设MaxSize=5)。图3.6(a)表示顺序栈为栈空,这也是初始化运算得到的结果。此时栈顶指针top=-1。如果做出栈运算,则会“下溢出”。 ……
作者简介
本书是作者针对数据结构课程的特点,在总结自己长期教学经验的基础上编写的,本书的“简明”性主要体现在以下两个方面。 内容上的简明性。本书的内容基本涵盖了1新全国计算机专业联考大纲数据结构部分的知识点,讲授上省去了一些难度较大的应用和扩展内容,如表达式求值和迷宫问题、串的KMP 算法和广义表等。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0