spContent=数据结构在计算机科学中是一门综合性的专业基础课,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。
数据结构在计算机科学中是一门综合性的专业基础课,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。
—— 课程团队
课程概述
通过本课程学习,使学生掌握计算机科学中组织、表示和处理数据的基本方法,培养学生运用数据结构和算法知识解决应用问题的能力,提高算法设计和程序设计水平,为《数字图像处理与图像通信》、《网络技术与应用》和《数据库技术与应用》等很多与IT相关的后续课程学习,也为“大信息”背景下非数值应用软件的开发打下良好的理论基础。本课程的学习,有助于IT相关专业的学生解决各自专业中软件设计的问题。
本课程的教学内容包括线性表、栈和队列、数组、树和二叉树、集合、搜索树、散列表、图和文件等常见的数据结构,讨论各种典型的搜索和内、外排序算法。此外,还介绍递归算法、各种典型的搜索算法和内、外排序等算法,并给出算法分析的基本方法。
希望同学们在经过本课程的学习,能够做到:从数据的逻辑结构、存储结构和运算三个方面理解并掌握线性表、栈、队列、数组、树、图和文件等常用的数据结构;了解在各种常用的数据结构上实现的排序和查找运算;对算法的时间和空间复杂性有一定的分析能力;针对常见的应用问题,能选择合适的数据结构及设计有效的算法解决问题。
授课目标
本课程主要研究各种数据的抽象表示、实现方法和算法的设计过程,是计算机软件设计的重要理论和实践基础课程。
课程目标1:
使学生掌握数据结构的基本概念,熟悉合理组织数据的基本方法,培养学生运用计算思维分析计算机及应用领域的相关工程问题的能力,为本专业后续课程学习及进一步的软件开发打下良好的理论基础。
课程目标2:
能够运用计算思维分析问题和解决问题,针对具体问题,分析数据元素的组成和逻辑关系,设计灵活高效的数据存储结构,实现所需的运算, 针对计算机及应用领域复杂工程问题设计可行的研究方案。
课程目标3:
能综合运用数据结构的基本理论和设计方法,研究针对计算机及应用领域复杂工程问题自主设计数据结构,并能对研究方案的可行性进行论证。
成绩 要求
考核方式包括平时考核与期末考核。
平时考核:通过单元测验成绩、学生作业情况、学生对问题讨论参与程度进行评分;
期末考核:通过期末考试成绩进行评分。
单元测验、单元作业、论坛讨论评分比例分别是40%、40%、20%。
课程总成绩大于等于60为合格;大于等于90为优秀。
合格即可获得相应证书。
课程大纲
绪论
课时目标:教学基本要求:了解课程的学习目的和内容,深刻理解有关数据结构的基本概念,理解将抽象数据类型应用于数据结构研究的方法,掌握算法分析的基本方法。
知识单元一:基础知识(3学时)
(1)知识点一:算法与数据结构
(2)知识点二:什么是数据结构
(3)知识点三:数据抽象和抽象数据类型
(4)知识点四:描述数据结构和算法
(5)知识点五:算法分析的基本方法
线性表
课时目标:教学基本要求:深刻理解线性表抽象数据类型以及线性表的顺序和链接表示方法,熟练掌握线性表中基本运算的实现算法,学会分析各算法的性能,以及学会使用线性表求解一元多项式的算术运算。
知识单元二:线性表(6学时)
(1)知识点一:线性表ADT
(2)知识点二:线性表的顺序表示
(3)知识点三:线性表的链接表示
(4)知识点四:多项式的算术运算
栈和队列
课时目标:教学基本要求:深刻理解栈和队列抽象数据类型以及它们的顺序和链接表示方法,熟练掌握栈和队列数据结构中基本运算的实现算法,掌握如何借助栈进行后缀表达式计算、理解其实现方法,了解递归的基本概念及递归调用的方法。
知识单元三:栈和队列(4学时)
(1)知识点一:栈
(2)知识点二:队列
(3)知识点三:表达式计算
(4)知识点四:递归
数组
课时目标:教学基本要求:理解数组抽象数据类型,掌握一般数组的顺序表示方法以及对称矩阵的存储方式,理解稀疏矩阵的含义,掌握稀疏矩阵的三元组表示方法,了解利用三元组表示法的矩阵快速转置算法。
知识单元四:数组(4学时)
(1)知识点一:数组
(2)知识点二:特殊矩阵
(3)知识点三:稀疏矩阵
树
课时目标:教学基本要求:了解树和森林的基本概念及主要存储方式,深刻理解二叉树的定义、性质和二叉链表存储结构,熟练掌握二叉树遍历的三种递归算法,学会利用二叉树遍历求解其它相关问题,掌握森林与二叉树的转换方法,了解堆和优先权队列数据结构,掌握建堆算法,了解在优先权队列中插入、删除元素的方法,理解哈夫曼树构造方法,学会哈夫曼编码和译码的方法。
知识单元五:树(10学时)
(1)知识点一:树的基本概念
(2)知识点二:二叉树
(3)知识点三:二叉树的遍历
(4)知识点四:树和森林
(5)知识点五:堆和优先权队列
(6)知识点六:哈夫曼树和哈夫曼编码
集合
课时目标:教学基本要求:理解集合的基本概念,熟练掌握在集合中相关的搜索算法,具体包括有序表的顺序搜索、对半搜索的递归和非递归算法,了解使用二叉判定树进行二分搜索平均时间复杂度的方法。
知识单元六:集合(2学时)
(1)知识点一:基本概念
(2)知识点二:顺序搜索
(3)知识点三:二分搜索
搜索树
课时目标:教学基本要求:深刻理解二叉搜索树的定义和性质,熟练掌握二叉搜索树中搜索、插入和删除元素的算法,了解二叉平衡树定义以及在二叉平衡树中插入元素的平衡旋转方法,掌握B-树的定义以及在B-树中插入和删除元素的方法。
知识单元七:搜索树(5学时)
(1)知识点一:二叉搜索树
(2)知识点二:二叉平衡树
(3)知识点三:B−树
散列表
课时目标:教学基本要求:掌握散列表的概念,了解常见的散列函数,掌握解决冲突的拉链法和开地址法。
图
课时目标:教学基本要求:深刻理解图的基本概念,熟练掌握图的邻接矩阵和邻接表存储结构,理解图中一些常见的算法:图的深度优先和广度优先遍历算法,拓扑排序和关键路径算法,求最小代价生成树的普里姆和克鲁斯卡尔算法,以及求单源最短路径。
知识单元九:图(10学时)
(1)知识点一:图的基本概念
(2)知识点二:图的存储结构
(3)知识点三:图的遍历
(4)知识点四:拓扑排序
(5)知识点五:关键路径
(6)知识点六:最小代价生成树
(7)知识点七:单源最短路径
排序
课时目标:教学基本要求:熟练掌握各种常见的内排序算法,学会分析和比较各种内排序算法的时间和空间复杂度,理解这些算法的异同,学会针对实际排序问题,选择合适的排序算法。了解外排序的基本概念和基本方法。
知识单元十:排序(9学时)
(1)知识点一:内排序基本概念
(2)知识点二:简单排序算法
(3)知识点三:快速排序
(4)知识点四:两路合并排序
(5)知识点五:堆排序
(6)知识点六:外排序
展开全部
预备知识
参考资料
1.教材
《数据结构(C语言)》,王海艳等,人民邮电出版社,2017年9月
(21世纪高等教育计算机规划教材)
2.主要参考书
[1]《数据结构与算法分析:C语言描述(原书第2版)》,(美)Mark Allen Weiss 著, 冯舜玺 译,机械工业出版社,2004年;
[2] 《计算机科学丛书:C程序设计语言(第2版·新版)》,(美) Dennis M.Ritchie(丹尼斯·里奇) 著,徐宝文,李志 译,机械工业出版社,2004年;
[3] 《数据结构与算法:C++语言描述》,陈慧南 著,高等教育出版社,2005年;
[4] 《清华大学计算机系列教材:数据结构(C语言版)》,严蔚敏、吴伟民 著,清华大学出版社,2011年;
[5] 《大话数据结构》,程杰 著,清华大学出版社,2011年。