hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

hi,小mooc
数据结构
第12次开课
开课时间: 2025年02月16日 ~ 2025年06月22日
学时安排: 3-6小时每周
进行至第11周,共19周 已有 791 人参加
立即参加
课程详情
课程评价(119)
spContent=怎样提升编程实力?如何玩转人工智能、大数据等热门技术?先来搞定数据结构吧。数据结构是计算机学科中最基本的一种内功心法,掌握好计算机求解问题过程中数据的组织和处理方法,才能更好理解千变万化的高阶招式。我们的特色是从生活实例引入,结合实际应用,图文并茂,由浅入深,重实践,轻理论推导。
怎样提升编程实力?如何玩转人工智能、大数据等热门技术?先来搞定数据结构吧。数据结构是计算机学科中最基本的一种内功心法,掌握好计算机求解问题过程中数据的组织和处理方法,才能更好理解千变万化的高阶招式。我们的特色是从生活实例引入,结合实际应用,图文并茂,由浅入深,重实践,轻理论推导。
—— 课程团队
课程概述

    数据结构课程不仅是计算机、人工智能等专业的重要基础课程,也是通讯、电子、数学、统计等相关学科的必修课。它是程序设计课程的进阶篇,其中所涵盖的理论知识和技术方法,以及在数据抽象能力、编程实践能力等方面所提供的训练,是学习算法设计、机器学习、操作系统、编译、数据库等后继课程的必备前提,也可为从事科研或大型工程项目的实际研发打下坚实的基础。


教学内容

    本课程主要探讨计算机求解问题过程中相关数据的组织和处理方法,具体可分为3个部分:

第1章综述数据、数据结构、抽象数据类型、算法及其时空效率等基本概念和通用分析方法;

第2章到第7章从逻辑结构、存储结构和基本操作的设计与实现这3个层面分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本数据结构类型及其应用;

第8章和第9章讨论查找和排序的各种实现方法,并从时间和空间上进行了定性或定量的分析和比较。

       本课程的内容选取和章节编排主要依据清华大学严蔚敏教授编著的《数据结构(C语言版)》,并参考了计算机学科硕士研究生招生考试大纲。


课程特点

    对每一种经典的数据结构,我们先从大家熟悉的日常生活实例引入,再结合具体实例,配合生动直观的图示或动画,由浅入深地导出它们的定义、存储实现方法以及基本操作算法的思想,并在视频中逐一详解算法实现细节,帮助大家轻松入门。对于比较复杂的算法,我们还会通过具体示例来演示和细致讲解算法执行过程及设计原理,帮助大家更好地理解其精髓。

    我们还准备了丰富的综合应用案例,并从各类考试和面试真题中精心筛选出一些同步练习题以及OJ编程实训题,帮助大家加深对理论知识的感性认知,轻松掌握数据的各种常见组织和处理方法,并能针对具体问题选择合适的数据结构,提升实际编程能力。

       本课程团队成员均为从事数据结构课程教学的一线教师,教学经验丰富,会及时为大家答疑解惑。


选课建议

       本课程可与线下课堂教学相结合,用于计算机、电子、数学等学科相关专业学生的《数据结构》、《算法导论》、《软件技术基础》等相关课程的课前预习、混合教学、反转教学或课后复习;也适用于有信息类求职或深造需要的专业或转专业人员、相关领域的科研或工程技术人员按需补习或参考,以及有编程基础的AI或IT爱好者在线自主学习。

授课目标

Level 1:建立计算机中数据组织方式和数据处理流程上的正确概念;

Level 2:了解各种常用数据结构的特点、适用范围,并初步掌握一些基本的算法效率定性和定量分析方法;

Level 3:针对具体的应用背景和需求,对比并选取合适的数据结构及实现方式,并能预估其时空效率,提高实际应用能力;

Level 4:对较复杂的实际问题进行分析建模,综合运用所学的理论、方法和技术,选择或设计并实现合适的数据结构、存储实现及相应操作集,并能对其时空效率进行正确评价,提高算法设计及程序开发能力,培养创新能力。

课程大纲

第一周 绪论

1.1 什么是数据结构

1.2 数据结构的基本概念(一)——逻辑结构

1.2 数据结构的基本概念(二)——物理结构

1.3 抽象数据类型

1.4 什么是算法

1.5 算法的分析与度量

【编程实训讲解】

第一周 编程实训

第一周 绪论 单元测验

第二周 线性表

2.1 线性表的定义(一)——概念和ADT

2.1 线性表的定义(二)——合并与归并

2.2 顺序表

2.3 线性链表(一)——单链表

2.3 线性链表(二)——静态链表

2.4 循环链表和双向链表

2.5 顺序表与线性链表的比较(一)——顺序表与链表

2.5 顺序表与线性链表的比较(二)——各种链表的对比

2.6 一元多项式的表示及运算

【编程实训讲解】

第二周 编程实训

第二周 线性表 单元测验

第三周 栈和队列

3.1 栈的定义与实现

3.2 栈的应用举例(一)——数制转换、括号匹配、行编辑器

3.2 栈的应用举例(二)—迷宫求解

3.2 栈的应用举例(三)—表达式求值

3.3 栈与递归的实现(一)——递归的定义

3.3 栈与递归的实现(二)——递归的实现

3.4 队列的定义与实现(一)——定义和链队列

3.4 队列的定义与实现(二)——循环队列和双端队列

第三周 编程实训

第三周 栈和队列 单元测验

第四周 串

4.1 串的定义

4.2 串的表示和实现

4.3 串的模式匹配算法(一)——朴素算法

4.3 串的模式匹配算法(二)——KMP算法

4.3 串的模式匹配算法(三)——KMP算法(续)

4.4 串的应用举例

第四周 编程实训

第四周 串 单元测验

第五周 数组和广义表

5.1 数组的定义及顺序存储

5.2 矩阵的压缩存储(一)——特殊矩阵

5.2 矩阵的压缩存储(二)——三元组顺序表

5.2 矩阵的压缩存储(三)——行逻辑链接的顺序表

5.2 矩阵的压缩存储(四)——十字链表

5.3 广义表

第五周 编程实训

第五周 数组和广义表 单元测验

第六周 树和二叉树(上)

6.1 树的定义

6.2 二叉树(一)——定义和性质

6.2 二叉树(二)——存储结构

6.3 二叉树的遍历(一)——递归算法

6.3 二叉树的遍历(二)——非递归算法

6.3 二叉树的遍历(三)——应用

第六周 树和二叉树(上) 单元测验

第六周 编程实训

第七周 树和二叉树(下)

6.4 线索二叉树(一)——基本概念及查找方法

6.4 线索二叉树(二)——遍历及线索化

6.5 树和森林(一)——树的存储结构

6.5 树和森林(二)——与二叉树的转换及遍历

6.6 赫夫曼树及其应用(一)——基本概念及编码、译码方法

6.6 赫夫曼树及其应用(二)——存储及算法实现

6.6 赫夫曼树及其应用(三)——存储及算法实现(续)

第七周 树和二叉树(下) 单元测验

第七周 编程实训

第八周 图(上)

7.1 图的定义

7.2 图的存储结构(一)——数组表示法、邻接表

7.2 图的存储结构(二)——十字链表、邻接多重表

7.3 图的遍历

7.4 图的连通性

7.5 最小生成树(一)——Prim算法

7.5 最小生成树(二)——Kruscal算法

第八周 图(上) 单元测验

第八周 编程实训

第九周 图(下)

7.6 拓扑排序

7.7 关键路径(一)——基本概念及事件最早发生时间

7.7 关键路径(二)——事件最迟发生时间及关键活动

7.8 最短路径(一)——Dijkstra算法

7.8 最短路径(二)——Floyd算法

第九周 编程实训

第九周 图(下) 单元测验

第十周 查找(上)

8.1 查找的基本概念

8.2 顺序表的查找

8.3 有序表的查找

8.4 索引顺序表的查找

8.5 二叉排序树(一)——基本概念及查找、插入

8.5 二叉排序树(二)——删除及性能分析

8.6 平衡二叉树(一)——基本概念及调平衡方法

8.6 平衡二叉树(二)——插入及性能分析

第十周 查找(上) 单元测验

第十周 编程实训

第十一周 查找(下)

8.9 哈希表(三)——冲突处理方法

8.9 哈希表(四)——查找及性能分析

8.7 B_树(一)——基本概念及查找

8.7 B_树(二)——插入及删除

8.8 B+树

8.9 哈希表(一)——基本概念

8.9 哈希表(二)——哈希函数的构造方法

第十一周 查找(下) 单元测验

第十一周 编程实训

第十二周 排序(上)

9.1 排序的基本概念

9.2 插入排序(一)——直接插入、折半插入

9.2 插入排序(二)——shell排序

9.3 交换排序

9.4 选择排序(一)——简单选择、树形选择

9.4 选择排序(二)——堆排序

第十二周 排序(上) 单元测验

第十二周 编程实训

第十三周 排序(下)

9.5 归并排序

9.6 基数排序(一)——多关键字排序、基数排序

9.6 基数排序(二)——链式基数排序

9.7 各种内部排序方法的比较

第十三周 排序(下) 单元测验

第十三周 编程实训

展开全部
预备知识
  • 学过一门编程语言,具有一定的编程基础

Python、Java或者C#等语言的编程思路与C/C++语言是相通的,数据结构本质上是不依赖于编程语言的,并且本课程所使用的编程练习平台可以接受多种语言代码的提交。

  • 离散数学及概率论的一些初步知识(不是必须的)

离散数学的相关基础知识有助于更好地深入理解本课程的内容,概率的初步知识主要用于算法时空效率的定量分析。


证书要求

为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

 

电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。

 

完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。

 

认证证书申请注意事项:

1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。

2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。


参考资料
  1. 严蔚敏、吴伟民编著,数据结构(C语言版),清华大学出版社,2007年
  2. 邓俊辉编著,数据结构(C++语言版)(第3版),清华大学出版社,2013年
  3. 张铭,王腾蛟,赵海燕编著, 数据结构与算法,高等教育出版社,2008年

课程编程练习平台:

    拼题A,全称“Programming Teaching Assistand”,网址:https://pintia.cn

厦门大学
5 位授课老师
郑旭玲

郑旭玲

助理教授

曾华琳

曾华琳

讲师

陈毅东

陈毅东

副教授

推荐课程

数据结构与算法期末冲刺-5小时突击数据结构与算法

小谢老师01

25657人参加

猴博士C语言不挂科-4小时学完C语言

猴博士爱讲课

312064人参加

离散数学期末冲刺/考研-10小时突击离散数学

弓长老师

15196人参加

期末高分-8小时C语言精讲【新版】

小谢老师01

8944人参加
下载
下载

下载App