个人介绍
数据结构与算法

主讲教师:刘大有

教师团队:共1

  • 刘大有
学校: 吉林大学
开课院系: 计算机科学与技术学院
专业大类: 计算机科学与技术
开课专业: 计算机软件与理论
学分: 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
2022-09-13 24.41MB
 
文档
.ppt
2022-09-13 769.50KB
1.2.1 数据的逻辑结构
视频
.mp4
2020-03-01 86.92MB
 
文档
.ppt
2020-03-01 284.50KB
 
图书
.book
2020-03-01 289.00Byte
1.2.2 数据的存储结构
视频
.mp4
2020-03-01 37.26MB
 
文档
.ppt
2020-03-01 327.50KB
1.2.3 对数据结构的操作
视频
.mp4
2020-03-01 12.21MB
 
文档
.ppt
2020-03-01 212.50KB
1.2.4 数据结构示例
视频
.mp4
2020-03-01 15.79MB
 
文档
.ppt
2020-03-01 212.50KB
1.3.1 算法及其特性
视频
.mp4
2020-03-01 46.52MB
 
文档
.ppt
2020-03-01 219.50KB
 
图书
.book
2020-03-01 289.00Byte
1.3.2 算法的描述
视频
.mp4
2020-03-01 141.61MB
 
文档
.ppt
2020-03-01 530.50KB
2.1 线性表的定义和基本操作
视频
.mp4
2020-03-01 94.85MB
 
文档
.ppt
2020-03-01 145.50KB
2.2 线性表的顺序存储结构
视频
.mp4
2020-03-01 382.74MB
 
文档
.ppt
2020-03-01 307.50KB
 
图书
.book
2020-03-01 289.00Byte
2.3.1 单链表
视频
.mp4
2020-03-01 363.14MB
 
文档
.ppt
2020-03-01 492.00KB
 
图书
.book
2020-03-01 289.00Byte
2.3.2 循环链表
视频
.mp4
2020-03-01 38.39MB
 
文档
.ppt
2020-03-01 158.00KB
2.4.1 堆栈的定义和主要操作
视频
.mp4
2020-03-01 74.97MB
 
文档
.ppt
2020-03-01 207.00KB
2.4.2 顺序栈
视频
.mp4
2020-03-01 123.12MB
 
文档
.ppt
2020-03-01 203.50KB
2.5.1 队列的定义和主要操作
视频
.mp4
2020-03-01 19.94MB
 
文档
.ppt
2020-03-01 655.00KB
2.5.2 顺序队列
视频
.mp4
2020-03-01 141.47MB
3.1.1 数组的存储和寻址
视频
.mp4
2020-03-01 13.82MB
 
文档
.ppt
2020-03-01 320.00KB
 
图书
.book
2020-03-01 289.00Byte
3.1.2 一维数组类
视频
.mp4
2020-03-01 169.79MB
 
文档
.ppt
2020-03-01 275.50KB
4.1.1 树的定义
视频
.mp4
2020-03-01 51.39MB
 
文档
.ppt
2020-03-01 340.00KB
 
图书
.book
2020-03-01 289.00Byte
4.1.2 树的相关术语
视频
.mp4
2020-03-01 46.32MB
 
文档
.ppt
2020-03-01 297.50KB
4.2.1 二叉树定义与主要性质
视频
.mp4
2020-03-01 138.09MB
 
文档
.ppt
2020-03-01 395.50KB
 
图书
.book
2020-03-01 289.00Byte
4.2.2 二叉树顺序存储
视频
.mp4
2020-03-01 53.33MB
 
文档
.ppt
2020-03-01 400.00KB
4.2.3 二叉树链接存储
视频
.mp4
2020-03-01 122.01MB
 
文档
.ppt
2020-03-01 357.00KB
4.2.4 二叉树遍历
视频
.mp4
2020-03-01 204.44MB
 
文档
.ppt
2020-03-01 552.50KB
4.2.5 创建二叉树
视频
.mp4
2020-03-01 75.23MB
 
文档
.ppt
2020-03-01 279.50KB
4.2.6 复制二叉树
视频
.mp4
2020-03-01 71.73MB
 
文档
.ppt
2020-03-01 312.50KB
5.1 图的基本概念
视频
.mp4
2020-03-01 205.07MB
 
文档
.ppt
2020-03-01 612.00KB
 
图书
.book
2020-03-01 289.00Byte
5.2.1 图的存储结构
视频
.mp4
2020-03-01 86.85MB
 
文档
.ppt
2020-03-01 457.50KB
 
图书
.book
2020-03-01 289.00Byte
5.2.2 Graph类
视频
.mp4
2020-03-01 72.83MB
 
文档
.ppt
2020-03-01 356.00KB
5.3.1 深度优先遍历
视频
.mp4
2020-03-01 142.11MB
 
文档
.ppt
2020-03-01 389.00KB
 
图书
.book
2020-03-01 289.00Byte
5.3.2 广度优先遍历
视频
.mp4
2020-03-01 38.76MB
 
文档
.ppt
2020-03-01 382.50KB
6.1 递归的定义
视频
.mp4
2020-03-01 299.32MB
 
文档
.ppt
2020-03-01 222.50KB
6.2 基本递归过程
视频
.mp4
2020-03-01 48.91MB
 
文档
.ppt
2020-03-01 829.00KB
6.3 递归法求解问题
文档
.ppt
2020-02-13 210.50KB
 
视频
.mp4
2020-03-01 127.35MB
 
文档
.ppt
2020-03-01 468.50KB
7.1 排序问题的基本概念
视频
.mp4
2020-03-01 64.02MB
 
文档
.ppt
2020-03-01 326.50KB
7.2.1 直接插入排序
视频
.mp4
2020-03-01 318.59MB
 
文档
.ppt
2020-03-01 659.00KB
 
图书
.book
2020-03-01 289.00Byte
7.3.1 冒泡排序
视频
.mp4
2020-03-01 208.59MB
 
文档
.ppt
2020-03-01 1.40MB
 
图书
.book
2020-03-01 289.00Byte
7.3.2 快速排序
视频
.mp4
2020-03-01 338.94MB
 
文档
.ppt
2020-03-01 542.50KB
7.4.1 直接选择排序
视频
.mp4
2020-03-01 56.64MB
 
文档
.ppt
2020-03-01 370.50KB
 
图书
.book
2020-03-01 289.00Byte
8.1.1 无序表的顺序查找
视频
.mp4
2020-03-01 162.59MB
 
文档
.ppt
2020-03-01 310.00KB
 
图书
.book
2020-03-01 289.00Byte
8.1.2 有序表的顺序查找
视频
.mp4
2020-03-01 25.53MB
 
文档
.ppt
2020-03-01 166.00KB
8.2.1 对半查找
视频
.mp4
2020-03-01 213.74MB
 
文档
.ppt
2020-03-01 408.50KB
 
图书
.book
2020-03-01 289.00Byte
8.2.2 一致对半查找
视频
.mp4
2020-03-01 113.98MB
 
文档
.ppt
2020-03-01 230.50KB
8.3.1 基本概念和性质
视频
.mp4
2020-03-01 43.41MB
 
文档
.ppt
2020-03-01 344.50KB
 
图书
.book
2020-03-01 289.00Byte
8.3.2 查找、插入和删除
视频
.mp4
2020-03-01 167.29MB
 
文档
.ppt
2020-03-01 230.00KB
提示框
提示框
确定要报名此课程吗?
确定取消

京ICP备10040544号-2

京公网安备 11010802021885号