数据结构(西安理工大学)
数据结构(西安理工大学)
1000+ 人选课
更新日期:2025/04/28
开课平台智慧树
开课高校西安理工大学
开课教师范翠香罗作民宋昕李晔张彤
学科专业工学计算机类
开课时间2025/01/21 - 2025/07/20
课程周期26 周
开课状态开课中
每周学时-
课程简介
“数据结构”是一门研究非数值计算的程序设计问题中计算机的操作对象及其之间关系与操作的课程。它是计算机相关专业的一门重要的核心专业基础课。该课程旨在培养学生基本数据结构分析能力和综合程序设计的实现能力,体现着创造性思维的信息素质培养过程,是计算机科学与技术 人才素质培养框架中的脊梁骨。 通过本课程学习,使学习者理解并掌握数据结构的一般原理。掌握各种逻辑结构的特点、各逻辑结构在计算机中的存储表示及其运算实现;掌握算法的评价标准及评价方法。
课程大纲

在线教程

章节简介教学计划
绪论
登录后可预览视频
数据结构的概念
罗作民
算法及其特点
罗作民
算法分析与复杂度计算
罗作民
线性表
线性表的概念
罗作民
线性表的顺序存储
罗作民
线性表的链式存储(上)
范翠香
线性表的链式存储(中)
范翠香
线性表的链式存储(下)
范翠香
栈与队列
栈的定义与顺序栈
宋昕
链栈与栈的应用
宋昕
队列的定义及顺序队列
宋昕
链队列与队列的应用
宋昕
栈在消除递归中的应用举例
范翠香
栈与队列的综合应用
范翠香
串的定义与运算
宋昕
串的简单模式匹配-BF算法
宋昕
串的模式匹配-KMP算法
宋昕
数组与广义表
数组的概念与存储
宋昕
广义表及其存储
宋昕
树与二叉树
树的基本概念
宋昕
二叉树的概念与存储
宋昕
树与二叉树性质与应用举例
宋昕
二叉树的遍历
范翠香
二叉树遍历的非递归算法实现
张彤
树与森林
宋昕
二叉树的线索化(上)
张彤
二叉树的线索化(下)
张彤
哈夫曼树的构造
范翠香
图的概念与性质
范翠香
图的存储
范翠香
图的深度遍历
范翠香
图的广度遍历
范翠香
最小生成树-prim算法
范翠香
最小生成树-kruskal算法
范翠香
单源最短路径-Dijkstra算法
范翠香
两点之间最短路径-Floyd算法
范翠香
拓扑排序
范翠香
关键路径
范翠香
图的应用
宋昕
查找
查找的概念与顺序查找
宋昕
折半查找
宋昕
平衡二叉树
罗作民
树表形式的动态查找
范翠香
地址映射下的动态查找-哈希查找
宋昕
B树与B+树
罗作民
排序
排序基本概念
李晔
直接插入排序及折半插入排序
李晔
希尔排序
李晔
冒泡排序
李晔
快速排序
李晔
简单选择排序
李晔
堆排序
李晔
归并排序
李晔
基数排序
李晔
  • 第一章绪论

    本章将首先介绍数据结构的非数值计算研究方向、数据结构基本概念,以及数据结构所研究的三个方面的内容,即数据的逻辑结构、数据的存储结构和数据的运算,讨论线性结构(线性表、栈、队列)和非线性结构(树、图、集合)的逻辑特征,以及数据存储的四种基本方法;然后介绍算法的概念、特性、评价标准、描述、与程序的区别等;最后介绍算法分析与复杂度计算,尤其是时间复杂度的概念及计算。

  • 1.1数据结构的概念

    本节主要介绍数据结构的研究方向、数据结构基本概念以及数据结构研究的三方面内容。

  • 1.2算法及其特点

    本节主要介绍算法的概念、特性、评价标准、描述、与程序的区别等。

  • 1.3算法分析与复杂度计算

    本节主要介绍算法分析与复杂度计算,尤其是时间复杂度的概念及计算。

  • 第二章线性表

    本章将介绍绍线性表的定义、运算,讨论线性表的两种存储结构——顺序表和链表,以及在这两种存储结构上实现的基本运算。

  • 2.1线性表的概念

    本节主要介绍线性表的定义和线性表的基本操作。

  • 2.2线性表的顺序存储

    本节主要介绍线性表顺序存储的概念和线性表顺序存储基本操作的实现。

  • 2.3线性表的链式存储(上)

    逻辑上线性表其存储方式有顺序存储和链式存储。这一讲主要介绍链式存储中单链表的定义以及头插法和尾插法创建单链表的实现过程。

  • 2.4线性表的链式存储(中)

    线性表的顺序存储不适合做插入与删除操作,而链表的特性使在线性表插入删除操作实现起来非常便利,所以需要经常做插入和删除操作的线性表适合采取链式存储。本讲主要介绍单链表的插入和删除操作的实现。

  • 2.5线性表的链式存储(下)

    单链表的每个结点中只有一个指向直接后继结点的next指针域,因此链表操作时只能按单一方向从前向后进行搜索,无法向前搜索,即使引入单循环链表问题也没有根本解决,因此引入了双向链表,即在链表的每一个结点中有两个指针域,一个指向直接前驱一个指向直接后继。本节主要学习单循环链表以及双向链表的插入删除操作的实现。

  • 第三章栈与队列

    栈和队列是两种重要的数据结构,它们的逻辑结构和线性表相同。其特点在于运算受到了限制,栈按照“后进先出”的规则进行操作,队列按“先进先出”的规则进行操作,因此它们也被称为受限的线性表。

  • 3.1栈的定义与顺序栈

    栈是限制在表的一端进行插入和删除的线性表。允许插入和删除的一端为栈顶,另一端为栈底,当表中没有元素时称为空栈。栈的基本操作是插入和删除,一般称为入栈和出栈。栈按照存储结构可分为顺序栈和链栈两类,顺序栈一般用数组来实现,链栈用链指针连接数据元素节点来实现。

  • 3.2链栈与栈的应用

    链栈是栈的一种实现形式,通过链指针连接数据元素来实现。栈的应用包括表达式求值,括号匹配。

  • 3.3队列的定义及顺序队列

    队列是限制在表的一段进行插入,另一端进行删除的的线性表,分别对应于入队和出队操作。队列按照存储结构可分为顺序队列和链队列两类,顺序队列一般用数组实现,链队列用链指针连接数据元素节点来实现。

  • 3.4 链队列与队列的应用

    链队列是队列的一种实现形式,通过链指针连接数据元素来实现。

  • 3.5栈在消除递归中的应用举例

    递归是一种常用的算法设计思想。递归算法通常描述简洁、思路清晰、程序可读性和可维护性好,但递归程序的执行因其时间和空间开销的增大而效率很低。如何将递归过程变为非递归执行过程?结合函数调用特征以及栈的工作特征,因此在消除递归函数时通常使用栈这种数据结构。本节主要通过一个实例介绍栈在消除递归过程中的应用。

  • 3.6栈与队列的综合应用

    栈与队列的综合应用

  • 第四章

    串(即字符串)是一种特殊的线性表,它的数据元素仅有字符组成,计算机非数值处理对象经常是字符串数据,如在汇编和高级语言的编译程序中,源代码和目标代码都是字符串数据;在商业应用程序中,客户的姓名和地址,商品的名称和产地等信息,一般也是作为字符串处理的。另外串还有自身的特性,常常把一个串作为一个整体来处理,因此,在这一章把串作为独立的概念加以研究,介绍串的存储结构以及基本运算。

  • 4.1串的定义与运算

    串的定义与基本运算:字符串一般简称为串,可以将它看作是一种特殊的线性表,这种线性表的数据元素的类型总是字符型的。串的基本运算较多,主要有串拷贝、串连接、串比较、求串长、求子串等。

  • 4.2串的简单模式匹配-BF算法

    串的简单模式匹配-BF算法

  • 4.3串的模式匹配-KMP算法

    串的模式匹配-KMP算法

  • 第五章数组与广义表

    数组与广义表

  • 5.1数组的概念与存储

    数组的概念与存储

  • 5.2广义表及其存储

    广义表及其存储

  • 第六章树与二叉树

    树是一种非线性的逻辑结构,它描述的数据元素之间的关系是一对多的,呈现出类似自然界中树的形状。这种树形的层次结构在生活中广泛存在,其应用也十分广泛。本章介绍树的有关概念和性质、二叉树的概念、存储、遍历、树、森林与二叉树的转换、哈夫曼树等。

  • 6.1树的基本概念

    树形结构是一类非常重要的非线性结构,是以分支关系定义的层次结构,其应用非常广泛,其中二叉树是本章的重点。

  • 6.2二叉树的概念与存储

    二叉树是最基本、最重要的树形结构,它有5个重要性质,主要的存储方法是二叉链表存储。

  • 6.3树与二叉树性质与应用举例

    本节将对树与二叉树相关性质的应用习题进行解答。

  • 6.4 二叉树的遍历

    二叉树的遍历是树与二叉树的许多操作的基础。本节主要介绍二叉树的4种遍历算法思想及其算法实现过程。这4种遍历有:先根遍历、中根遍历、后根遍历和层次遍历。对于前3种遍历本讲仅涉及其递归算法实现。

  • 6.5二叉树遍历的非递归算法实现

    二叉树遍历的非递归算法实现

  • 6.6树与森林

    本小节的主要内容一是树的存储表示法,二是树、森林与二叉树之间的转换,三是树和森林的遍历法。

  • 6.7二叉树的线索化(上)

    二叉树的线索化(上)

  • 6.8二叉树的线索化(下)

    二叉树的线索化(下)

  • 6.9哈夫曼树的构造

    信息编码方法的优劣直接影响信息传递的效率。一种好的编码方法应该满足译码无二义性,总编码长度最短。哈夫曼编码就是一种能满足这两个条件的编码方法。本节主要学习哈夫曼编码的原理以及如何构造哈夫曼树的算法过程。

  • 第七章

    图是一种逻辑关系更为复杂的一种逻辑结构,其应用十分广泛。本章首先介绍图的基本概念和有关术语,介绍图的两种存储方式(邻接矩阵、邻接表),接着学习图的两种遍历算法(图的深度和广度优先遍历)以及最小生成树的构造(普里姆算法和克鲁斯卡尔算法),最后学习最短路径(Dijkstra算法和Floyd算法)和拓扑排序和关键路径;

  • 7.1图的概念与性质

    要学习图的算法,首先必须了解图的概念及相关术语。本节介绍图的定义和有关图的一些术语以及图的一些基本性质。

  • 7.2图的存储

    图在计算机中的存储有多种方案,本节主要介绍图的邻接矩阵以及邻接表存储。由于图的各种操作实现均依赖于其存储结构,因此要求理解并掌握这两种不同存储结构的特点。

  • 7.3图的深度遍历

    图的遍历是图的许多操作的基础。图的常用的两种遍历方法是深度优先搜索和广度遍历。本节主要学习深度优先遍历的算法思想,并介绍了基于邻接矩阵和邻接表的深度优先遍历的实现。

  • 7.4图的广度遍历

    图的常用两种遍历方法是深度优先搜索和广度优先搜索。本节主要学习广度优先遍历策略的算法思想,并介绍了基于邻接矩阵和邻接表的广度优先遍历的实现。

  • 7.5最小生成树-prim算法

    在图的广泛应用中,一个非常常见的应用是构造最小生成树。Prim算法是一种构造连通图的最小生成树的贪心算法,本节主要学习Prim的算法思想及其算法实现。

  • 7.6最小生成树-kruskal算法

    Kruskal算法是另一种构造连通图的最小生成树的算法,本节介绍Kruskal算法思想以及算法实现。

  • 7.7单源最短路径-Dijkstra算法

    在许多图的应用中,另一个常见的应用就是找最短路径,其中一个就是求单源最短路径,即寻求从图的某个顶点出发到其余各顶点的最短路径。本节主要介绍Dijkstra算法的思想及算法实现。

  • 7.8两点之间最短路径-Floyd算法

    Floyd算法主要用于构造图中任意两点间的最短路径。本节主要介绍Floyd算法思想及其算法实现。

  • 7.9拓扑排序

    一个大的工程能否顺利完工,其中一个关键问题是在其所有子工程构成的AOV网中能否确定一个顶点的拓扑序列。本节介绍拓扑序列的构造思想以及算法实现。

  • 7.10关键路径

    关键路径

  • 7.11图的应用

    图的应用

  • 第八章查找

    查找

  • 8.1查找的概念与顺序查找

    查找的概念与顺序查找

  • 8.2折半查找

    折半查找

  • 8.3平衡二叉树

    树表形式的动态查找

  • 8.4树表形式的动态查找

    平衡二叉树

  • 8.5地址映射下的动态查找-哈希查找

    地址映射下动态查找-哈希查找

  • 8.6B树与B+树

    B树与B+树

  • 第九章排序

    本章介绍了排序的概念及常用排序方法,包括插入排序中的直接插入、折半插入排序和希尔排序,交换排序中的冒泡排序和快速排序,选择排序中的简单选择和堆排序等。每种排序算法分别介绍了基本思想、排序过程、具体实现及主要性能指标。

  • 9.1 排序基本概念

    本节首先介绍了和排序相关的基本概念,主要包括排序的定义、目的、分类及排序算法的性能重要评价指标,最后给出了本章排序算法中所需使用的数据类型定义。

  • 9.2直接插入排序及折半插入排序

    直接插入排序与折半排序

  • 9.3希尔排序

    本节介绍了插入排序中的直接插入和折半插入排序。二者的区别为在有序表中查找插入位置时,分别采用了顺序查找和折半查找。在平均情况下,由于折半插入排序减少了查找过程关键字的比较次数,其性能高于直接插入排序。

  • 9.4冒泡排序

    本节介绍了交换排序中的冒泡排序,其核心思想是对待排序范围内相邻元素关键字进行比较,发现逆序则交换。单向冒泡排序的冒泡方向有自下至上和自上至下两种,通过采用双向冒泡算法可有效提高原有单向冒泡算法的效率。

  • 9.5快速排序

    本节介绍了交换排序中的快速排序。快速排序在每趟排序中通过左右交替方向的扫描将基准元素定位在数据表的恰当位置上。将当数据表规模较大时,在平均情况下它是所有内部排序方法中速度最快的一种。

  • 9.6简单选择排序

    本节介绍了选择排序中的简单选择排序。简单选择排序通过每趟排序在待排序范围中选择出关键字最小或最大的元素,之后和待排序范围中第一个元素进行交换的方法来实现数据表的有序排列。

  • 9.7堆排序

    堆排序通过引入树形选择思想对简单选择排序进行了改进,将待排序的数据表看作是完全二叉树的顺序存储形式。本节介绍了最大及最小堆的概念,堆排序基本思想,初始堆建立和利用最大堆实现升序排列的堆排序具体实现方法。

  • 9.8归并排序

    归并排序

  • 9.9基数排序

    基数排序

  • 开始学习
  • 第一章  作业测试
    第一章 绪论

    1.1 数据结构的概念

    1.2 算法及其特点

    1.3 算法分析与复杂度计算

    视频数3
  • 第二章  作业测试
    第二章 线性表

    2.1 线性表的概念

    2.2 线性表的顺序存储

    2.3 线性表的链式存储(上)

    2.4 线性表的链式存储(中)

    2.5 线性表的链式存储(下)

    视频数5
  • 第三章  作业测试
    第三章 栈与队列

    3.1 栈的定义与顺序栈

    3.2 链栈与栈的应用

    3.3 队列的定义及顺序队列

    3.4 链队列与队列的应用

    3.5 栈在消除递归中的应用举例

    3.6 栈与队列的综合应用

    视频数6
  • 第四章  作业测试
    第四章

    4.1 串的定义与运算

    4.2 串的简单模式匹配-BF算法

    4.3 串的模式匹配-KMP算法

    视频数3
  • 第五章  作业测试
    第五章 数组与广义表

    5.1 数组的概念与存储

    5.2 广义表及其存储

    视频数2
  • 第六章  作业测试
    第六章 树与二叉树

    6.1 树的基本概念

    6.2 二叉树的概念与存储

    6.3 树与二叉树性质与应用举例

    6.4 二叉树的遍历

    6.5 二叉树遍历的非递归算法实现

    6.6 树与森林

    6.7 二叉树的线索化(上)

    6.8 二叉树的线索化(下)

    6.9 哈夫曼树的构造

    视频数9
  • 第七章  作业测试
    第七章

    7.1 图的概念与性质

    7.2 图的存储

    7.3 图的深度遍历

    7.4 图的广度遍历

    7.5 最小生成树-prim算法

    7.6 最小生成树-kruskal算法

    7.7 单源最短路径-Dijkstra算法

    7.8 两点之间最短路径-Floyd算法

    7.9 拓扑排序

    7.10 关键路径

    7.11 图的应用

    视频数11
  • 第八章  作业测试
    第八章 查找

    8.1 查找的概念与顺序查找

    8.2 折半查找

    8.3 平衡二叉树

    8.4 树表形式的动态查找

    8.5 地址映射下的动态查找-哈希查找

    8.6 B树与B+树

    视频数6
  • 第九章  作业测试
    第九章 排序

    9.1 排序基本概念

    9.2 直接插入排序及折半插入排序

    9.3 希尔排序

    9.4 冒泡排序

    9.5 快速排序

    9.6 简单选择排序

    9.7 堆排序

    9.8 归并排序

    9.9 基数排序

    视频数9
  • 期末考试