课程

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

hi,小mooc
SPOC学校专有课程
数据结构
第1次开课
开课时间: 2018年03月12日 ~ 2018年03月13日
学时安排: 4
当前开课已结束 已有 323 人参加
立即自学
往期不提供结课证书,想参加下学期课程, 点击这里预约>>
spContent=计算机科学与技术是信息产业发展的基础,而数据结构又是计算机专业核心课程之首。 数据结构是计算机存储、组织数据的方式。 我们将要学习数据的逻辑结构、物理结构以及基于上述结构的运算,并学习常用的查找与排序技术。要求同学们能选择最佳的数据结构与算法,从而提高问题的分析与求解能力。
计算机科学与技术是信息产业发展的基础,而数据结构又是计算机专业核心课程之首。 数据结构是计算机存储、组织数据的方式。 我们将要学习数据的逻辑结构、物理结构以及基于上述结构的运算,并学习常用的查找与排序技术。要求同学们能选择最佳的数据结构与算法,从而提高问题的分析与求解能力。
—— 课程团队
课程概述

    数据结构是计算机类、信息与通信类、其它工学类相关专业的重要专业基础课程,特别是计算机科学与技术专业考研的必考课程。

    程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学员学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。

    该课程相关课程档案齐备,电子资源丰富,涉及多名主讲老师,形成了教学团队。历年来,该门课程在学生中反映良好,也是学生非常重视,期待提高的一门课程。

授课目标

掌握常见的数据逻辑结构与物理结构,以及相应的运算,掌握常见的排序技术与查找技术,能选择最佳的数据结构与算法,从而提高问题的分析与求解能力。

成绩 要求

通过视频学习,完成测试和作业,达到课程要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。

单元测试和作业占总成绩50%,考试占总成绩50%。60分-79分为合格,80分及以上为优秀。

 

课程大纲

1章 绪论 (2学时)

教学目标:理解数据结构, 掌握算法分析。

重点、难点:重点是数据结构(逻辑结构、存储结构);难点是抽象数据类型。

1.1什么是数据结构

1.2抽象数据类型的表示与实现

1.3算法描述和算法分析

2章 线性表 (8学时)

教学目标:理解循环链表、双向链表, 掌握单链表。

重点、难点:重点是单链表;难点是循环链表、双向链表。

2.1线性表的抽象数据类型定义(1学时)


2.2

线性表的顺序表示和实现 (1学时

)


2.3线性表的链式表示和实现(4学时)


2.3.1单链表


2.3.2循环链表


2.3.3双向链表


2.3.4静态链表


2.4一元多项式的表示及相加运算(2学时)


3章 栈和队列 (6学时)


教学目标:理解栈和队列, 掌握栈和队列的应用。


重点、难点:重点是栈、队列的基本操作算法;难点是栈、队列在程序设计中的实际应用。


3.1 (3学时)


3.1.1栈的抽象数据类型定义


3.1.2栈的表示和实现


3.1.3栈的应用举例


3.1.4栈与递归的实现


3.2队列(3学时)


3.2.1队列的抽象数据类型定义


3.2.2队列的表示和实现


3.2.3队列的应用举例


4章 串 (3学时)


教学目标:理解串的抽象数据类型定义, 掌握字符串的模式匹配。


重点、难点:重点是字符串的抽象数据类型定义和操作实现;难点是字符串的模式匹配。


4.1串的抽象数据类型定义(1学时)


4.2串的表示和实现(2学时)


4.2.1定长顺序串


4.2.2堆串


5章 数组和广义表 (4学时)


教学目标:理解广义表的定义, 掌握稀疏矩阵。


重点、难点:重点是特殊矩阵的压缩存储,稀疏矩阵;难点是稀疏矩阵的乘法运算。


5.1数组的抽象数据类型定义(0.5学时)


5.2数组的顺序表示和实现(0.5学时)


5.3矩阵的压缩存储(2学时)


5.3.1特殊矩阵


5.3.2稀疏矩阵


5.4广义表(1学时)


6章 树和二叉树 (10学时)


教学目标:理解二叉树的遍历, 掌握哈夫曼树。


重点、难点:重点是二叉树的遍历,哈夫曼树及其应用;难点是线索二叉树。


6.1树的抽象数据类型定义(1学时)


6.2二叉树(2学时)


6.2.1二叉树的抽象数据类型定义


6.2.2二叉树的性质


6.2.3二叉树的存储结构

 



6.3二叉树的遍历与线索化(3学时)


6.3.1二叉树的遍历


6.3.2基于栈的递归消除


6.3.3遍历算法应用


6.3.4线索二叉树


6.4树和森林(2学时)


6.4.1树的存储结构


6.4.2树、森林与二叉树的相互转换


6.4.3树和森林的遍历


6.5哈夫曼树及其应用(2学时)


6.5.1哈夫曼树


6.5.2哈夫曼编码


6.5.3哈夫曼编码算法的实现


7章 图 (10学时)


教学目标:理解图的存储结构, 掌握求最小生成树、拓扑排序和最短路径。


重点、难点:重点是用普里姆算法求最小生成树、拓扑排序、关键路径、用迪杰斯特拉算法求最短路径的程序实现;难点是邻接多重表、用克鲁斯卡尔算法求最小生成树。


7.1图的抽象数据类型定义和术语(1学时)


7.2图的存储结构(1学时)


7.2.1邻接矩阵


7.2.2邻接表


7.2.3十字链表


7.2.4邻接多重表


7.3图的遍历(2学时)


7.3.1深度优先搜索


7.3.2广度优先搜索


7.4图的连通性问题(2学时)


7.4.1无向图的连通分量


7.4.2最小生成树


7.5有向无环图及其应用(2学时)


7.5.1拓扑排序


7.5.2关键路径


7.6最短路径(2学时)


7.6.1从某个源点到其余各顶点的最短路径


7.6.2每一对顶点之间的最短路径


8章 查找 (8学时)


教学目标:理解查找的基本方法, 掌握二叉排序树、哈希表。


重点、难点:重点是顺序查找、折半查找、分块查找、二叉排序树、哈希表;难点是平衡二叉排序树、B-树和B+树。


8.1基于线性表的查找方法(2学时)


8.1.1顺序查找法


8.1.2折半查找法


8.1.3分块查找法


8.2基于树的查找方法(4学时)

8.2.1二叉排序树

 


 

8.2.2平衡二叉排序树


8.2.3 B


8.3计算式查找方法——哈希表(2学时)


8.3.1哈希函数的构造方法


8.3.2处理冲突的方法


8.3.3哈希表的查找过程


8.3.4哈希表的性能分析


9章 内部排序 (5学时)


教学目标:理解内部排序的基本方法, 掌握直接插入排序、快速排序、堆排序、归并排序。


重点、难点:重点是直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序;难点是堆排序,基数排序。


9.1概述


9.2插入类排序(1学时)


9.2.1直接插入排序


9.2.2其它插入排序


9.2.3希尔排序


9.3交换类排序(1学时)


9.3.1冒泡排序


9.3.2快速排序


9.4选择类排序(2学时)


9.4.1简单选择排序


9.4.2树形选择排序


9.4.3堆排序


9.5归并排序(0.5学时)


9.6分配类排序(0.5学时)


9.6.1多关键字排序


9.6.2链式基数排序


9.6.2基数排序的顺序表结构


9.7各种排序方法的综合比较


 


 

 

 


 

 


 

 


 





展开全部
预备知识

     学过一门编程语言,具有一定编程基础,即可理解主要内容,因为数据结构本质上是不依赖于编程语言的,且编程练习平台可以接受二十余种语言代码的提交。但由于算法描述多用类似C语言的伪码,且“小白系列”仅讲解C语言的算法实现,所以如果学过C语言会更容易接受。

    如果还对计算机处理离散结构的基本理论和方法有较为系统的理解(即预修“离散数学”),则对更扎实地掌握本课程内容有很大帮助,但并不是必须的。


参考资料

1.《数据结构--用C语言描述(第2版),耿国华等主编,高等教育出版社,2015年7月

2.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2016年6月

3.数据结构实验指导(C语言版), 杨晓波主编,中国电力出版社,2010年2月

4《数据结构(C语言版),严蔚敏等,清华大学出版社,2007.3

 

华中农业大学
4 位授课老师
陈仲民

陈仲民

教授

赵良

赵良

副教授

周雄辉

周雄辉

副教授

下载
下载

下载App