个人介绍
数据结构

主讲教师:杨博、刘大有等

教师团队:共4

  • 杨博
  • 刘大有
  • 朱允刚
  • 虞强源
学校: 吉林大学
开课院系: 计算机科学与技术学院
专业大类: 计算机科学与技术
开课专业: 计算机软件与理论
课程英文名称: Data Structure
学分: 2
课时: 72

《数据结构》是计算机学科的主干基础课,主要介绍基本的数据结构、典型算法及其应用。对计算机学科而言,《数据结构》是进一步学习和开展高层次研究的必修课。国际著名计算机科学家、图灵奖获得者D.E.Knuth教授指出:“程序就是用计算机所能接受的语言编写的算法,对于计算机程序而言,算法是最基本的”。数据结构与算法有着不可分割的关系,是计算机算法和计算机程序设计的理论基础。因此,《数据结构》课程在计算机科学中占有十分重要的地位。本课程主要包括绪论,线性表、树、图登记本数据结构,递归、排序、查找等基本算法,内存管理,文件等五部分。​

主讲教师

杨博

职称:教师

刘大有

职称:教授

单位:吉林大学

部门:计算机科学与技术学院

朱允刚

职称:副教授

单位:吉林大学

部门:计算机科学与技术学院

虞强源

职称:副教授

单位:吉林大学

部门:计算机科学与技术学院

数据结构


在计算机科学或信息科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。

一般而言,数据结构的选择首先会从抽象数据类型的选择开始。一个设计良好的数据结构,应该在尽可能使用较少的时间与空间资源的前提下,为各种临界状态下的运行提供支持。数据结构可通过编程语言所提供的数据类型、引用及其他操作加以实现。不同种类的数据结构适合于不同种类的应用,而部分甚至专门用于特定的作业任务。例如,当计算机网络依赖于路由表运作时,B树高度适用于数据库的封装。

在许多类型的程序设计中,选择适当的数据结构是一个主要的考虑因素。许多大型系统的构造经验表明,封装的困难程度与最终成果的质量与表现,都取决于是否选择了最优的数据结构。在许多时候,确定了数据结构后便能很容易地得到算法。而有些时候,思路则会颠倒过来,例如当某个关键作业需要特定数据结构下的算法时,会反过来确定其所使用的数据结构。然而,不管是哪种情况,数据结构的选择都是至关重要的。

‍        系统构造的关键因素是数据结构而非算法的这一深入理解,导致了多种形式化的设计方法与编程语言的出现。绝大多数的语言都带有某种程度上的模块化思想,通过将数据结构的具体实现封装隐藏于受限接口之后的方法,来让不同的应用程序能够安全地重用这些数据结构。C++、Java、Python等面向对象的编程语言可使用类来完成这一功能。

       因为数据结构的重要性毋庸置疑,现代编程语言及其运行环境在标准库中都包含了多种数据结构,例如 C++ 标准模板库中的容器、Java集合框架以及微软的.NET Framework。

        大多数数据结构都由数列、记录、可辨识联合、引用等基本类型构成。举例而言,可空引用(nullable reference,一种可被置空的引用)是引用与可辨识联合的结合体,而最简单的链式结构链表则是由记录与可空引用构成。

        数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。‍

学习指南与内容特点



学习本课程要注意数据结构与算法紧密结合,对典型算法掌握其时间复杂性的分析过程,学会基本的算法正确性证明方法,教材中每章附带的习题和习题集中的习题可根据推荐的难度等级由浅入深、独立思考逐步完成。如遇到较难习题,要逐级参考分级启发式提示并结合自己的思路尝试解决。在学习过程中,通过ADL语言描述快速理解并掌握算法的设计思想,再结合上机实验和课程设计等实践环节利用C++语言进行验证实验、设计实验以及综合运用所学知识进行综合实验和创新实验,在理论和实践相结合的过程中不断巩固和加深对数据结构知识的理解,并提高编程能力,更好的完成本课程的学习。



采用(ADL和C++)两种语言描述算法;算法与数据结构紧密结合:强调“数学严格”,对书中典型算法都给出了时间复杂性分析,对于某些算法正确性相关的一些问题给出了证明,并注重分析与证明的严格性;突出启发式教学与因材施教内容的设计与撰写;对科研成果转化为教学内容进行了探索;增加了与重要知识点相关的背景、历史和参考文献。

教学目的与任务



数据结构》课程的教学目标是使学生理解数据结构的基本概念、计算机内部数据对象的表示和特性,掌握数据的逻辑、存储结构及其差异,以及各种操作的实现,能够针对实际问题选择合适的数据结构和方法设计出结构清晰、正确易读、复杂性较优的算法,同时掌握对算法进行时间、空间复杂性分析的基本技能。



《数据结构》课程的主要任务是教授学生数据结构和算法的基本理论和方法,算法分析的基本方法,数据结构在计算机科学中的基本应用,为《程序设计》、《编译原理》、《操作系统》和《数据库》等课程的学习以及计算机软件的研发奠定理论基础和培养实践能力。同时,《数据结构》课程的学习过程也是复杂问题求解和规范化程序设计的训练过程,注重培养学生的问题分析、数据抽象和算法设计能力,同时训练学生按照软件工程规范编写程序的素养。

​教学基本要求

      ● 了解数据结构及其分类、数据结构预算法的密切关系。

      ● 系统掌握线性表、树、和图等基本数据结构的定义、性质和特点。

      ● 熟练掌握各种基本数据结构的存储结构、逻辑结构及相关算法,能够根据实际问题选择合适的数据结构。

      ● 掌握各种数据结构在排序和查找等常用算法中的应用。

      ● 掌握算法时空复杂性分析的基本技巧。

      ● 了解数据结构课程中各知识点的来龙去脉及相互关系。

      ● 注重培养学生利用算法语言和面向对象程序设计语言设计算法和编写程序的技巧与能力。

      ● 注重培养学生的创新能力,采用理论与实践相结合的方法,利用启发式教学方式,提高学生分析问题和解决问题的能力,使学生完成本门课程的学习任务之后,能够综合运用多种数据结构解决实际问题。

参考教材

---------------------------------------点击查看更多书籍-------------------------------------------------

【1】Adam Drozdek.Data Structures and Algorithms in C++(ThirdEdition).Thomson Learning,2005.

【2】Mark Allen Weiss.Data Structure and Algorithm Analysis in C++(ThirdEdition).Pearson Education,2006.

【3】Mark Allen Weiss 【美】著,翁惠玉,严骏等译《数据结构与问题求解Java语言描述》北京:人民邮电出版社,2006.

【4】Donald E.Knuth著,苏运霖译《计算机程序设计艺术》北京:国防工业出版社,2002.

【5】William Ford,William Topp,Data Structures with C++,Prentice-HallInternational,Inc,1996.

【6】Mark Allen Weiss,Algorithms,Data Structures,and Problem Solving withC++,Addison-Wesley Publishing Company,Inc,1996.

【7】Sartaj Sahni.Data Structures,Algorithms,and Applications inC++.McGraw-Hill,1998.

【8】CliffordA.Shaffer.A Practical Introduction to Data Structures andAlgorithm Analysis(Second Edition).Prentice Hall,2001.

【9】刘大有,唐海鹰,孙舒杨,虞强源,杨鲲。《数据结构》高等教育出版社,2003.

【10】严蔚敏,吴伟民,《数据结构》(C语言版),清华大学出版社,1997.

【11】张乃孝,裘宗燕,《数据结构-C++与面相对象的途径》,高等教育出版社,1998.

课程评价

教学资源
课程章节 | 文件类型   | 修改时间 | 大小 | 备注
1.1 为什么要学习数据结构
视频
.mp4
2021-04-10 24.41MB
 
文档
.ppt
2021-04-10 769.50KB
1.2.1 数据的逻辑结构
视频
.mp4
2021-03-27 86.92MB
 
文档
.ppt
2021-03-27 284.50KB
 
图书
.book
2021-03-27 289.00Byte
1.2.2 数据的存储结构
视频
.mp4
2020-02-13 37.26MB
 
文档
.ppt
2020-02-13 327.50KB
1.2.3 对数据结构的操作
视频
.mp4
2014-10-14 12.21MB
 
文档
.ppt
2014-10-14 212.50KB
1.2.4 数据结构示例
视频
.mp4
2014-10-14 15.79MB
 
文档
.ppt
2014-10-14 212.50KB
1.3.1 算法及其特性
视频
.mp4
2024-01-06 46.52MB
 
文档
.ppt
2024-01-06 219.50KB
 
图书
.book
2024-01-06 289.00Byte
1.3.2 算法的描述
视频
.mp4
2024-01-06 141.61MB
 
文档
.ppt
2024-01-06 530.50KB
1.3.3 算法的评价准则
视频
.mp4
2014-10-14 93.68MB
 
文档
.ppt
2014-10-14 295.00KB
1.4 算法的正确性证明
视频
.mp4
2014-10-14 54.98MB
 
文档
.ppt
2014-10-14 325.00KB
1.5.1 算法时间复杂性的分析方法
视频
.mp4
2014-10-14 152.50MB
 
文档
.ppt
2014-10-14 356.00KB
1.5.2 复杂性函数的渐近表示
视频
.mp4
2014-10-14 113.77MB
 
文档
.ppt
2014-10-14 323.00KB
1.5.3 算法时间和空间分析
视频
.mp4
2014-10-14 74.12MB
 
文档
.ppt
2014-10-14 279.00KB
2.1 线性表的定义和基本操作
视频
.mp4
2014-10-15 94.85MB
 
文档
.ppt
2014-10-15 145.50KB
2.2 线性表的顺序存储结构
视频
.mp4
2014-11-06 382.74MB
 
文档
.ppt
2014-11-06 307.50KB
 
图书
.book
2014-11-06 289.00Byte
2.3.1 单链表
视频
.mp4
2019-09-11 363.14MB
 
文档
.ppt
2019-09-11 492.00KB
 
图书
.book
2019-09-11 289.00Byte
2.3.2 循环链表
视频
.mp4
2014-10-16 38.39MB
 
文档
.ppt
2014-10-16 158.00KB
2.3.3 双向链表
视频
.mp4
2014-11-06 212.94MB
 
文档
.ppt
2014-11-06 222.00KB
 
图书
.book
2014-11-06 289.00Byte
2.4 复杂性分析
视频
.mp4
2014-11-06 62.72MB
 
文档
.ppt
2014-11-06 120.00KB
2.5.1 堆栈的定义和主要操作
视频
.mp4
2014-10-16 74.97MB
 
文档
.ppt
2014-10-16 207.00KB
2.5.2 顺序栈
视频
.mp4
2014-10-16 123.12MB
 
文档
.ppt
2014-10-16 203.50KB
2.5.3 链式栈
视频
.mp4
2014-10-16 97.76MB
 
文档
.ppt
2014-10-16 120.50KB
2.5.4 顺序栈与链式栈的比较
视频
.mp4
2014-10-17 22.61MB
 
文档
.ppt
2014-10-17 124.50KB
2.5.5 堆栈的应用
视频
.mp4
2014-10-17 102.87MB
 
文档
.ppt
2014-10-17 312.00KB
2.6.1 队列的定义和主要操作
视频
.mp4
2019-09-09 19.94MB
 
文档
.ppt
2019-09-09 655.00KB
2.6.2 顺序队列
视频
.mp4
2019-09-09 141.47MB
2.6.3 链式队列
视频
.mp4
2019-09-09 50.69MB
3.1.1 数组的存储和寻址
视频
.mp4
2014-11-06 13.82MB
 
文档
.ppt
2014-11-06 320.00KB
 
图书
.book
2014-11-06 289.00Byte
3.1.2 一维数组类
视频
.mp4
2019-09-09 169.79MB
 
文档
.ppt
2019-09-09 275.50KB
3.2.1 矩阵类
视频
.mp4
2014-11-06 95.32MB
 
文档
.ppt
2014-11-06 262.50KB
 
图书
.book
2014-11-06 289.00Byte
3.2.2 特殊矩阵
视频
.mp4
2014-10-21 128.09MB
 
文档
.ppt
2014-10-21 271.50KB
3.2.3 三元组表
视频
.mp4
2014-10-21 96.34MB
 
文档
.ppt
2014-10-21 308.00KB
3.2.4 十字链表
视频
.mp4
2014-10-21 38.23MB
 
文档
.ppt
2014-10-21 329.50KB
3.3.1 字符串的定义与字符串类
视频
.mp4
2014-11-06 65.12MB
 
文档
.ppt
2014-11-06 359.00KB
 
图书
.book
2014-11-06 289.00Byte
3.3.2 模式匹配算法
视频
.mp4
2014-11-06 217.29MB
 
文档
.ppt
2014-11-06 267.00KB
 
图书
.book
2014-11-06 289.00Byte
3.3.3 快速模式匹配算法
视频
.mp4
2014-10-22 249.37MB
 
文档
.ppt
2014-10-22 835.50KB
4.1.1 树的定义
视频
.mp4
2014-11-06 51.39MB
 
文档
.ppt
2014-11-06 340.00KB
 
图书
.book
2014-11-06 289.00Byte
4.1.2 树的相关术语
视频
.mp4
2014-10-21 46.32MB
 
文档
.ppt
2014-10-21 297.50KB
4.2.1 二叉树定义与主要性质
视频
.mp4
2014-11-06 138.09MB
 
文档
.ppt
2014-11-06 395.50KB
 
图书
.book
2014-11-06 289.00Byte
4.2.2 二叉树顺序存储
视频
.mp4
2014-10-21 53.33MB
 
文档
.ppt
2014-10-21 400.00KB
4.2.3 二叉树链接存储
视频
.mp4
2014-10-21 122.01MB
 
文档
.ppt
2014-10-21 357.00KB
4.2.4 二叉树遍历
视频
.mp4
2014-10-21 204.44MB
 
文档
.ppt
2014-10-21 552.50KB
4.2.5 创建二叉树
视频
.mp4
2014-10-21 75.23MB
 
文档
.ppt
2014-10-21 279.50KB
4.2.6 复制二叉树
视频
.mp4
2014-10-21 71.73MB
 
文档
.ppt
2014-10-21 312.50KB
4.3.1 线索二叉树定义
视频
.mp4
2014-10-21 35.46MB
 
文档
.ppt
2014-10-21 297.00KB
4.3.2 线索二叉树存储
视频
.mp4
2014-10-21 24.13MB
 
文档
.ppt
2014-10-21 298.50KB
4.3.3 线索二叉树基本算法
视频
.mp4
2014-10-21 81.15MB
 
视频
.mp4
2014-10-21 48.86MB
 
视频
.mp4
2014-10-21 179.81MB
 
文档
.ppt
2014-10-21 476.00KB
4.4.1 树与二叉树的转换
视频
.mp4
2014-10-24 98.34MB
 
文档
.ppt
2014-10-24 419.50KB
4.4.2 树的顺序存储
视频
.mp4
2014-10-24 53.68MB
 
文档
.ppt
2014-10-24 620.00KB
4.4.3 树的链接存储
视频
.mp4
2014-10-24 173.44MB
 
文档
.ppt
2014-10-24 663.00KB
4.4.4 树和森林的遍历
视频
.mp4
2014-10-24 255.04MB
 
文档
.ppt
2014-10-24 497.50KB
4.5.1 文件编码
视频
.mp4
2014-10-24 57.56MB
 
文档
.ppt
2014-10-24 267.50KB
4.5.2 扩充二叉树
视频
.mp4
2014-10-24 56.63MB
 
文档
.ppt
2014-10-24 292.00KB
4.5.3 哈夫曼树和哈夫曼编码
视频
.mp4
2014-10-24 156.59MB
 
文档
.ppt
2014-10-24 365.50KB
4.6.1 表达式求值
视频
.mp4
2014-10-27 138.61MB
 
文档
.ppt
2014-10-27 287.00KB
5.1 图的基本概念
视频
.mp4
2014-11-06 205.07MB
 
文档
.ppt
2014-11-06 612.00KB
 
图书
.book
2014-11-06 289.00Byte
5.2.1 图的存储结构
视频
.mp4
2014-11-06 86.85MB
 
文档
.ppt
2014-11-06 457.50KB
 
图书
.book
2014-11-06 289.00Byte
5.2.2 Graph类
视频
.mp4
2014-10-16 72.83MB
 
文档
.ppt
2014-10-16 356.00KB
5.3.1 深度优先遍历
视频
.mp4
2014-11-06 142.11MB
 
文档
.ppt
2014-11-06 389.00KB
 
图书
.book
2014-11-06 289.00Byte
5.3.2 广度优先遍历
视频
.mp4
2014-10-16 38.76MB
 
文档
.ppt
2014-10-16 382.50KB
5.4 拓扑排序
视频
.mp4
2014-11-06 141.18MB
 
文档
.ppt
2014-11-06 568.00KB
 
图书
.book
2014-11-06 289.00Byte
5.5 关键路径
视频
.mp4
2014-10-17 260.83MB
 
文档
.ppt
2014-10-17 1.85MB
5.6.1 无权最短路径问题
视频
.mp4
2014-11-06 105.10MB
 
文档
.ppt
2014-11-06 272.50KB
 
图书
.book
2014-11-06 289.00Byte
5.6.2 正权最短路径问题
视频
.mp4
2014-10-17 203.13MB
 
文档
.ppt
2014-10-17 968.50KB
5.6.3 每对顶点间的最短路径
视频
.mp4
2014-11-07 139.60MB
5.7.1 普里姆算法
视频
.mp4
2014-11-06 236.08MB
 
文档
.ppt
2014-11-06 645.50KB
 
图书
.book
2014-11-06 289.00Byte
5.7.2 克鲁斯卡尔算法
视频
.mp4
2014-10-17 34.36MB
 
文档
.ppt
2014-10-17 207.00KB
5.8.1 可及性与Warshall算法
视频
.mp4
2014-10-22 52.38MB
 
文档
.ppt
2014-10-22 232.50KB
5.8.2 连通分量
视频
.mp4
2014-10-24 15.23MB
 
文档
.ppt
2014-10-24 168.00KB
6.1 递归的定义
视频
.mp4
2014-10-24 299.32MB
 
文档
.ppt
2014-10-24 222.50KB
6.2 基本递归过程
视频
.mp4
2014-10-24 48.91MB
 
文档
.ppt
2014-10-24 829.00KB
6.3 递归过程的实现与堆栈
视频
.mp4
2014-10-24 368.21MB
 
文档
.ppt
2014-10-24 359.00KB
6.4 递归法求解问题
文档
.ppt
2014-10-15 210.50KB
 
视频
.mp4
2014-10-24 127.35MB
 
文档
.ppt
2014-10-24 468.50KB
6.5 递归的效率
视频
.mp4
2014-10-24 85.03MB
 
文档
.ppt
2014-10-24 295.00KB
7.1 排序问题的基本概念
视频
.mp4
2014-10-27 64.02MB
 
文档
.ppt
2014-10-27 326.50KB
7.2.1 直接插入排序
视频
.mp4
2014-11-06 318.59MB
 
文档
.ppt
2014-11-06 659.00KB
 
图书
.book
2014-11-06 289.00Byte
7.2.2 希尔(shell)排序
视频
.mp4
2014-10-31 79.05MB
 
文档
.ppt
2014-10-31 357.50KB
7.3.1 冒泡排序
视频
.mp4
2014-11-06 208.59MB
 
文档
.ppt
2014-11-06 1.40MB
 
图书
.book
2014-11-06 289.00Byte
7.3.2 快速排序
视频
.mp4
2014-11-03 338.94MB
 
文档
.ppt
2014-11-03 542.50KB
7.4.1 直接选择排序
视频
.mp4
2014-11-06 56.64MB
 
文档
.ppt
2014-11-06 370.50KB
 
图书
.book
2014-11-06 289.00Byte
7.4.2 堆排序
视频
.mp4
2014-11-04 221.89MB
 
视频
.mp4
2014-11-04 48.30MB
 
文档
.ppt
2014-11-04 983.00KB
7.5 合并排序
视频
.mp4
2014-11-06 260.11MB
 
文档
.ppt
2014-11-06 832.00KB
 
图书
.book
2014-11-06 289.00Byte
7.6.1 内排序方法的比较
视频
.mp4
2014-11-05 6.81MB
 
文档
.ppt
2014-11-05 378.50KB
7.6.2 排序下界
视频
.mp4
2014-11-05 11.27MB
7.7.1 基数分布
视频
.mp4
2014-11-05 151.64MB
 
文档
.ppt
2014-11-05 410.00KB
7.7.2 值分布
视频
.mp4
2014-11-05 169.46MB
 
文档
.ppt
2014-11-05 432.50KB
8.1.1 无序表的顺序查找
视频
.mp4
2014-11-07 162.59MB
 
文档
.ppt
2014-11-07 310.00KB
 
图书
.book
2014-11-07 289.00Byte
8.1.2 有序表的顺序查找
视频
.mp4
2014-11-07 25.53MB
 
文档
.ppt
2014-11-07 166.00KB
8.2.1 对半查找
视频
.mp4
2014-11-07 213.74MB
 
文档
.ppt
2014-11-07 408.50KB
 
图书
.book
2014-11-07 289.00Byte
8.2.2 一致对半查找
视频
.mp4
2014-11-07 113.98MB
 
文档
.ppt
2014-11-07 230.50KB
8.2.3 斐波那契查找
视频
.mp4
2014-11-07 255.66MB
 
文档
.ppt
2014-11-07 508.00KB
8.2.4 插值查找
视频
.mp4
2014-11-07 75.34MB
 
文档
.ppt
2014-11-07 177.50KB
8.3.1 基本概念和性质
视频
.mp4
2014-11-07 43.41MB
 
文档
.ppt
2014-11-07 344.50KB
 
图书
.book
2014-11-07 289.00Byte
8.3.2 查找、插入和删除
视频
.mp4
2014-11-07 167.29MB
 
文档
.ppt
2014-11-07 230.00KB
8.4 平衡树
文档
.ppt
2020-10-08 507.50KB
8.4.1 高度平衡树
视频
.mp4
2014-11-07 106.54MB
 
视频
.mp4
2014-11-07 77.27MB
 
视频
.mp4
2014-11-07 66.03MB
 
图书
.book
2014-11-07 289.00Byte
8.5 B树及其变形树
视频
.mp4
2014-11-06 265.59MB
 
文档
.ppt
2014-11-06 460.50KB
 
图书
.book
2014-11-06 289.00Byte
8.6 数字查找
视频
.mp4
2014-11-06 127.56MB
 
文档
.ppt
2014-11-06 1.15MB
 
图书
.book
2014-11-06 289.00Byte
8.7.1 散列函数
视频
.mp4
2014-11-06 249.45MB
 
文档
.ppt
2014-11-06 743.50KB
8.7.2 冲突调节
视频
.mp4
2021-03-27 246.46MB
 
文档
.ppt
2021-03-27 406.00KB
 
图书
.book
2021-03-27 289.00Byte
提示框
提示框
确定要报名此课程吗?
确定取消

京ICP备10040544号-2

京公网安备 11010802021885号