spContent=《数据结构与算法》是计算机科学中的一门综合性的专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据、正确地设计算法以及对算法的分析和评价。本课程强化了数据结构基本知识和程序设计基本能力的双基训练。其中绪论、线性表、栈和队列、图、查找由黄明芳老师主讲,树和二叉树由杨文霞老师主讲,排序由谢良老师主讲。
《数据结构与算法》是计算机科学中的一门综合性的专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据、正确地设计算法以及对算法的分析和评价。本课程强化了数据结构基本知识和程序设计基本能力的双基训练。其中绪论、线性表、栈和队列、图、查找由黄明芳老师主讲,树和二叉树由杨文霞老师主讲,排序由谢良老师主讲。
—— 课程团队
课程概述
《数据结构与算法》不仅是程序设计的基础,也是设计和实现编译程序、操作系统、数据库系统及其它系统程序以及各种大型应用程序的重要基础。本课程不仅涉及在计算机中如何有效地表示数据,如何合理地组织数据和处理数据,还涉及初步的算法设计和算法性能分析技术。学好数据结构课程,将为后续的专业课程,打下良好的知识基础,而且还为软件开发和程序设计提供了必要的技能训练。
本课程的主要内容包括:数据结构和算法的基本概念和技术,线性表、栈和队列、树和二叉树、图等典型数据结构及相关算法,以及排序、查找等重要算法。
通过本课程的学习,使学生深入理解数据结构的逻辑结构和存储结构的基本概念以及相关算法,培养基本的、良好的程序设计技能,设计合理的数据存储方式,并编制高效可靠的程序。
本课程是学科基础课,内容多而抽象、难学以及学时少,因而学习起来有一定难度,为保证教学效果,采用线上和线下相结合的教学方式,使学生能够很快掌握课程的主要知识和解决问题的方法。并通过大量的实例训练,使学生熟练掌握数据结构的设计并编程上机调试,为学好本专业的后续课程和将来的工作打下坚实的基础。
授课目标
通过本课程的学习,使学生在软件设计的过程中,能够正确分析数据的结构、并合理地选择数据的存储方式,设计科学操作算法,从而提高软件整体质量。对每一类数据结构,通过示范程序展示如何实现从抽象数据类型到实际程序的转换,并通过设计和日常生活密切相关的综合性实验,以培养学生发现问题解决问题的能力。本课程学习的效果不仅关系到后续课程的学习而且直接关系到软件设计水平的提高和专业素质的培养。
成绩 要求
本课程的学习环节包含:
观看讲课视频及其它课程资源、按时完成单元测验题、按时完成单元作业和作业互评、参与课程讨论、参加期末考试。
课程学习成绩由四部分构成:
(1)线上学习:占20%。根据同学们参与教学活动次数:上交作业次数、单元测验次数、观看视频时长及在讨论区发表的有效帖子给予评分,教学活动获得满分的同学需上交全部作业及测验,在线时长不低于300分钟,发表的有效帖子不少于20个,作业互评要求不少于5次。
(2)上机实验:占20%。由任课老师组织,分小组上机。
(3)课程考试:占60%。
课程大纲
绪论
课时目标:掌握数据结构的基本概念,数据的逻辑结构、存储结构。掌握算法描述方法和对算法性能分析方法。培养学生理解常用数据组织模型的能力、对具体算法性能定量评价的能力。
1. 1数据结构与算法简介
1.2. 什么是数据结构
1.3. 数据类型和抽象数据类型
1.4. 算法及其效率的度量
线性表
课时目标:掌握线性表的逻辑结构和抽象数据类型定义;顺序表和链式表的插入、删除、修改、查找等基本操作;以及使用线性表来解决实际问题。培养学生使用线性表对实际问题进行建模,并根据问题的具体要求来设计算法。
2.1. 线性表及其逻辑结构
2.2. 线性表的顺序存储结构
2.3. 顺序表的基本运算
2.4. 顺序表的应用
2.5. 线性表的链式存储结构
2.6. 单链表的基本运算
2.7. 单链表的应用
2.8. 双链表
2.9. 循环链表
2.10. 有序表
栈和队列
课时目标:掌握栈、队列在顺序存储结构和链式结构上基本运算的实现;通过学习栈和队列简单表达式计算、迷宫问题等经典问题求解过程,掌握栈和队列解决实际问题的方法。培养学生合理使用栈和队列对实际问题进行建模,并根据问题的具体要求来设计算法。
3.1. 栈的定义
3.2. 栈的顺序存储结构
3.3. 栈的链式存储结构
3.4. 栈的应用
3.5. 队列的定义及顺序存储结构
3.6. 顺序队列的运算
3.7. 队列的链式存储结构
3.8. 队列的应用
树和二叉树
课时目标:掌握二叉树的性质;掌握二叉树链式存储结构中构造、遍历和基本运算实现;掌握哈夫曼树的构造和哈夫曼编码的方法。培养学生使用二叉树对实际问题进行建模,并根据问题的具体要求来设计算法。
4.1. 树的概念
4.2. 树的性质和遍历
4.3. 二叉树的概念和性质
4.4. 二叉树的存储结构
4.5. 二叉树的基本运算
4.6. 二叉树的遍历
4.7. 二叉树的递归遍历算法的应用
4.8. 二叉树的构造和层次遍历
4.9. 树和森林
4.10. 哈夫曼树的概念和构造
4.11. 哈夫曼编码
图
课时目标:掌握图的邻接矩阵和邻接表两种存储方式,以及这两种方式上图的遍历和基本运算的实现方法;掌握最小生成树的Prim 和Kruskal 两种算法;掌握Dijkstra最短路径算法;培养学生使用图对实际问题进行建模,并根据问题的具体要求来设计算法。
5.1. 图的概念
5.2. 图的邻接矩阵存储法
5.3. 图的邻接表存储法
5.4. 图的基本运算
5.5. 图的深度优先遍历
5.6. 图的广度优先遍历
5.7. 最小生成树和普里姆算法
5.8. 克鲁斯卡尔算法
5.9. 最短路径
5.10. 拓扑排序
查找
课时目标:掌握顺序表和有序表上的查找以及二叉排序树的查找、插入、删除算法;掌握哈希函数的构造方法和查找以及解决冲突的方法。培养学生根据具体问题选择合适的查找方式。
6.1. 查找的基本概念
6.2. 顺序查找
6.3. 折半查找和分块查找
6.4. 二叉排序树的查找
6.5. 哈希表的查找
排序
课时目标:掌握各种排序算法的思路和实现;掌握对各种排序算法的时间和空间复杂度分析。培养学生根据实际问题特点选择合适解决方案,设计并评价算法性能的能力。
7.1. 排序的概念
7.2. 直接插入排序
7.3. 冒泡排序
7.4. 简单选择排序
7.5. 归并排序
展开全部
预备知识
参考资料
1.《数据结构教程》(第5版),李春葆主编,清华大学出版社,2017年出版。
2.《数据结构(C语言版)》,严蔚敏、吴伟民主编,清华大学出版社,2013年出版。
3. 《数据结构与算法分析:C语言描述》(第2版),(美)维斯 著,冯舜玺 译,机械工业出版社,2004年出版。
4. 《数据结构教程学习指导》(第5版),李春葆主编,清华大学出版社,2017年出版。
常见问题
Q :
数据结构与算法是什么?
A :
1.数据结构是按照逻辑关系组织起来的一批数据;
2.算法是解决方案的准确而完整的描述,是指令的有限序列。当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态;
3.数据结构和算法是相辅相成的,数据结构是为算法服务的,而算法要作用在特定的数据结构上。
Q :
为什么要学习数据结构与算法?
A :
1.数据结构和算法属于基础知识,通用型较强;
2.能写出性能更优的代码;
3.为软件开发和程序设计提供了必要的技能训练,并为后续的专业课程,打下良好的知识基础;
Q :
学什么?
A :
1.数据的逻辑结构;
2.数据的存储结构;
3.数据的运算。
Q :
怎么学?
A :
预习——听课、作笔记——上机——复习(看书、做作业)