标签分类 热门分类
当前位置:首页 > 计算机理论电子书 > 数据结构电子书网盘下载
数据结构教程(学习指导/上机实验) 数据结构教程(学习指导/上机实验)
Yst

Yst 提供上传

资源
45
粉丝
32
喜欢
264
评论
7

    数据结构教程(学习指导/上机实验) PDF 完整第5版

    数据结构电子书
    • 发布时间:

    给大家带来的一篇关于数据结构相关的电子书资源,介绍了关于数据结构、教程方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小61.7 MB,李春葆编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.5,更多相关的学习资源可以参阅 计算机理论电子书、等栏目。

  • 数据结构教程(学习指导/上机实验) PDF 下载
  • 下载地址:https://pan.baidu.com/s/1we92lmZ40HNmCrWhrQVNU
  • 分享码:pqk9
  • 数据结构教程 第五版 PDF

    这书配套设施20钟头的视频教学,本实例教程突显上机操作实习内容,书中得出很多的上机操作试验题(分成认证、布置和综合性试验),供老师和大学生采用。为了更好地老师课堂教学和孩子学习,这书出示了全方位而丰富多彩的教育资源,主要包括课堂教学PPT、源代码编码和习题最终答案等 

    这书在前4版的基本上对于国家教育部新的考研大纲和很多读者来信明确提出的规定开展了修定。这书共13章,內容包含绪论、线性表、栈和队列、串、递归、数组和广义表、树和二叉树、图、搜索、内排列、外排列和文档等,书中得出了很多习题和各种上机操作试验题,每一知识结构图都装有视頻解读。 这书內容全方位,知识结构图详实,条理清楚,解读深入,案例丰富多彩,应用性强,合适高等学校电子计算机和有关技术专业的本科毕业及硕士研究生应用。

    目录

    • 第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.2.3算法描述
    • 1.3算法分析
    • 1.3.1算法分析概述
    • 1.3.2算法时间性能分析
    • 1.3.3算法空间性能分析
    • 1.4数据结构 算法=程序
    • 1.4.1程序和数据结构
    • 1.4.2算法和程序
    • 1.4.3算法和数据结构
    • 1.4.4数据结构的发展
    • 本章小结
    • 练习题1
    • 上机实验题1
    • 验证性实验
    • 设计性实验
    • 第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.4线性表的应用
    • 2.5有序表
    • 2.5.1有序表的抽象数据类型描述
    • 2.5.2有序表的存储结构及其基本运算算法
    • 2.5.3有序表的归并算法
    • 2.5.4有序表的应用
    • 练习题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.2.5双端队列
    • 练习题3
    • 上机实验题3
    • 第4章串
    • 4.1串的基本概念
    • 4.2串的存储结构
    • 4.2.1串的顺序存储结构——顺序串
    • 4.2.2串的链式存储结构——链串
    • 4.3串的模式匹配
    • 4.3.1BruteForce算法
    • 4.3.2KMP算法
    • 练习题4
    • 上机实验题4
    • 第5章递归
    • 5.1什么是递归
    • 5.1.1递归的定义
    • 5.1.2何时使用递归
    • 5.1.3递归模型
    • 5.1.4递归与数学归纳法
    • 5.2栈和递归
    • 5.2.1函数调用栈
    • 5.2.2递归调用的实现
    • 5.2.3递归到非递归的转换
    • 5.3递归算法的设计
    • 5.3.1递归算法设计的步骤
    • 5.3.2基于递归数据结构的递归算法设计
    • 5.3.3基于递归求解方法的递归算法设计
    • 练习题5
    • 上机实验题5
    • 第6章数组和广义表
    • 6.1数组
    • 6.1.1数组的基本概念
    • 6.1.2数组的存储结构
    • 6.1.3特殊矩阵的压缩存储
    • 6.2稀疏矩阵
    • 6.2.1稀疏矩阵的三元组表示
    • 6.2.2稀疏矩阵的十字链表表示
    • 6.3广义表
    • 6.3.1广义表的定义
    • 6.3.2广义表的存储结构
    • 6.3.3广义表的运算
    • 练习题6
    • 上机实验题6
    • 第7章树和二叉树
    • 7.1树的基本概念
    • 7.1.1树的定义
    • 7.1.2树的逻辑表示方法
    • 7.1.3树的基本术语
    • 7.1.4树的性质
    • 7.1.5树的基本运算
    • 7.1.6树的存储结构
    • 7.2二叉树的概念和性质
    • 7.2.1二叉树的定义
    • 7.2.2二叉树的性质
    • 7.2.3二叉树与树、森林之间的转换
    • 7.3二叉树的存储结构
    • 7.3.1二叉树的顺序存储结构
    • 7.3.2二叉树的链式存储结构
    • 7.4二叉树的基本运算及其实现
    • 7.4.1二叉树的基本运算概述
    • 7.4.2二叉树的基本运算算法实现
    • 7.5二叉树的遍历
    • 7.5.1二叉树遍历的概念
    • 7.5.2先序、中序和后序遍历递归算法
    • 7.5.3先序、中序和后序遍历非递归算法
    • 7.5.4层次遍历算法
    • 7.6二叉树的构造
    • 7.7线索二叉树
    • 7.7.1线索二叉树的概念
    • 7.7.2线索化二叉树
    • 7.7.3遍历线索化二叉树
    • 7.8哈夫曼树
    • 7.8.1哈夫曼树概述
    • 7.8.2哈夫曼树的构造算法
    • 7.8.3哈夫曼编码
    • 7.9用并查集求解等价问题
    • 7.9.1什么叫并查集
    • 7.9.2并查集的算法实现
    • 练习题7
    • 上机实验题7
    • 第8章图
    • 8.1图的基本概念
    • 8.1.1图的定义
    • 8.1.2图的基本术语
    • 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广度优先遍历
    • 8.3.4非连通图的遍历
    • 8.3.5图遍历算法的应用
    • 8.4生成树和最小生成树
    • 8.4.1生成树的概念
    • 8.4.2无向图的连通分量和生成树
    • 8.4.3普里姆算法
    • 8.4.4克鲁斯卡尔算法
    • 8.5最短路径
    • 8.5.1路径的概念
    • 8.5.2从一个顶点到其余各顶点的最短路径
    • 8.5.3每对顶点之间的最短路径
    • 8.6拓扑排序
    • 8.7AOE网与关键路径
    • 8.7.1相关概念
    • 8.7.2求AOE网的关键活动
    • 练习题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.3.3B-树
    • 9.3.4B 树
    • 9.4哈希表的查找
    • 9.4.1哈希表的基本概念
    • 9.4.2哈希函数的构造方法
    • 9.4.3哈希冲突的解决方法
    • 9.4.4哈希表的运算算法
    • 练习题9
    • 上机实验题9
    • 第10章内排序
    • 10.1排序的基本概念
    • 10.2插入排序
    • 10.2.1直接插入排序
    • 10.2.2折半插入排序
    • 10.2.3希尔排序
    • 10.3交换排序
    • 10.3.1冒泡排序
    • 10.3.2快速排序
    • 10.4选择排序
    • 10.4.1简单选择排序
    • 10.4.2堆排序
    • 10.5归并排序
    • 10.6基数排序
    • 10.7各种内排序方法的比较和选择
    • 练习题10
    • 上机实验题10
    • 第11章外排序
    • 11.1外排序概述
    • 11.2磁盘排序
    • 11.2.1磁盘排序概述
    • 11.2.2生成初始归并段
    • 11.2.3多路平衡归并
    • 11.2.4最佳归并树
    • 11.3磁带排序
    • 11.3.1多路平衡归并排序
    • 11.3.2多阶段归并排序
    • 练习题11
    • 上机实验题11
    • 第12章文件
    • 12.1文件的基本概念
    • 12.1.1什么是文件
    • 12.1.2文件的逻辑结构及操作
    • 12.1.3文件的存储结构
    • 12.2顺序文件
    • 12.3索引文件
    • 12.3.1ISAM文件
    • 12.3.2VSAM文件
    • 12.4哈希文件
    • 12.5多关键字文件
    • 12.5.1多重表文件
    • 12.5.2倒排文件
    • 练习题12
    • 上机实验题12
    • 第13章采用面向对象的方法描述算法
    • 13.1面向对象的概念
    • 13.2用C 描述面向对象的程序
    • 13.2.1类
    • 13.2.2类对象
    • 13.2.3构造函数和析构函数
    • 13.2.4模板类
    • 13.3用C 描述数据结构算法
    • 13.3.1顺序表类模板
    • 13.3.2链栈类模板
    • 13.4使用STL设计数据结构算法
    • 附录A实验报告格式
    • 一、设计人员相关信息
    • 二、程序设计相关信息
    • 三、实验提交内容
    • 附录B引用型参数和指针引用型参数的说明
    • 附录C算法索引
    • 附录D名词索引
    • 附录E全国计算机专业数据结构2016年
    • 联考大纲
    • 参考文献

    上一篇:MongoDB大数据处理权威指南  下一篇:游戏开发入门:数学和物理

    展开 +

    收起 -

     
    数据结构 相关电子书
    关于数据结构的学习笔记
    网友NO.617607

    JavaScript数据结构之双向链表定义与使用方法示例

    本文实例讲述了JavaScript数据结构之双向链表定义与使用方法。分享给大家供大家参考,具体如下: 双向链表和普通链表的区别在于,在链表中,一个节点只有链向下一个节点的链接,而在双向链表中,链接是双向的:一个链向下一个元素,另一个链向前一个元素。 双向链表提供了两种迭代列表的方法:从头到尾,或者反过来。我们也可以访问一个特定节点的下一个或前一个元素。在单向链表中,如果迭代列表时错过了要找的元素,就需要回到列表起点,重新开始迭代。这是双向链表的一个优点。 function DoubleLink(){ var length=0;//链表长度 var head=null;//头结点的引用 var tail=null;//尾节点的引用 function Node(e){ this.element=e; this.next=null; this.previous=null; } this.insertAt=function(position,e){//在任意位置添加节点 if(position=0position=length){//判断边界 var node=new Node(e); var current=head; var previous; var index=0; if(position==0){//在第一个位置添加 if(!head){//链表为空的时候添加第一个节点 head=node; tail=node; }else{ current=head; node.next=current; current.previous=node; head=node; } }else if(position==length){//在链表末尾添加 current=tail; current.next=node; node.previous=current; tail=node; }else{ while(indexposition){ previous=current; current=current.next; index++; } previous.next=node; node.previous=previous; node.next=current; current.p……

    网友NO.574638

    java数据结构之树基本概念解析及代码示例

    Java中树的存储结构实现 一、树 树与线性表、栈、队列等线性结构不同,树是一...节点与节点之间的父子关系,可以为每个节点增加一个parent域,用以记录该节点的父点 树是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n0)个有限节点组成一个具有层次关系的集合。把 它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 树定义和基本术语 定义 树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。 特别地,不含任何结点(即n=0)的树,称为空树。 如下就是一棵树的结构: 基本术语 结点:存储数据元素和指向子树的链接,由数据元素和构造数据元素之间关系的引用组成。 孩子结点:树中一个结点的子树的根结点称为这个结点的孩子结点,如图1中的A的孩子结点有B、C、D 双亲结点:树中某个结点有孩子结点(即该结点的度不为0),该结点称为它孩子结点的双亲结点,也叫前驱结点。双亲结点和孩子结点是相互的,如图1中,A的孩子结点是B、C、……

    网友NO.672786

    Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈。栈是一种限制插入和删除只能在一个位置上的表。最基本的操作是进栈和出栈,因此,又被叫作“先进后出”表。 首先了解下栈的概念: 栈是限定仅在表头进行插入和删除操作的线性表。有时又叫LIFO(后进先出表)。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。 "栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。 实现方式是这样的:首先定义了一个接口,然后通过这个接口实现了线性栈和链式栈,代码比较简单,如下: package com.peter.java.dsa.interfaces;/** * 栈操作定义 * * @author Peter Pan */public interface StackT {/* 判空 */Boolean isEmpty();/* 清空栈 */void clear();/* 弹栈 */T pop();/* 入栈 */Boolean push(T data);/* 栈的长度 */int length();/* 查看栈顶的元素,但不移除它 */T peek();/* 返回对象在栈中的位置 */int search(T data);} 线性栈:以数组的方式实现。 package com.peter.java.dsa.common;import com.peter.java.dsa.interfaces.Stack;/** * 线性栈 * * @author Peter Pan */public class LinearStackT implements StackT {@SuppressWarnings("unchecked") private T[] t = (T[]) new Object[16];private int size = 0;@Override public Boolean isEmpty() {// TODO Auto-generated metho……

    网友NO.326521

    JavaScript数据结构中栈的应用之表达式求值问题详解

    本文实例讲述了JavaScript数据结构中栈的应用之表达式求值问题。分享给大家供大家参考,具体如下: 下面来谈一个比较经典的表达式求值问题,这个问题主要是设计到操作符的优先级。我们通常看到的表达式都是中缀表达式,存在很多优先级差别,而后缀表达式则没有这些优先级问题。下面先看看两种表达式的区别。 中缀表达式:a*b+c*d-e/f 后缀表达式:ab*cd*+ef/- 从中缀表达式转换到后缀表示式是很难实现的,我们这里可以通过栈的思想来实现。下面进行详细的介绍是什么样的思想: 在对一个中缀表示式进行转换的时候,遇到非操作符的字符则直接保存到后缀表示式的存储空间中。 遇到(,则压入栈,只有遇到对应的)才能被弹出。 遇到),就将(之前的操作符全部弹出,并保存到存储空间。 遇到*和/这样优先级高的,就判断栈中的操作符优先级是否低于当前操作符。 如果栈中的遇到的低,则将遇到的继续入栈;如果栈中的高,则将栈中的出栈,遇到的入栈。 最后,当字符串遍历完成,依次弹出操作符,保存到存储空间。 为了方便理解,将上面的例子再次讲解。a*b+c*d-e/f 首先是ab被保存到了存储空间,然后*入栈。现在栈中只有*。 遇到+之后,由于*比+优先级高,所以*出栈,+入栈,这样存储空间变为ab*,栈中变为+。……

    Copyright 2018-2020 xz577.com 码农之家

    电子书资源由网友、会员提供上传,本站记录提供者的基本信息及资源来路

    鸣谢: “ 码小辫 ” 公众号提供回调API服务、“ 脚本CDN ”提供网站加速(本站寻求更多赞助支持)

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com

    上传资源(网友、会员均可提供)

    查看最新会员资料及资源信息