学时 分配 | 课程讲授 | 自学指导 | 分析讨论 | 专题报告 | 实验或实习 | 其他 | ||||||
48 | 16 | 2 | ||||||||||
使用教材 | 名 称 | 出 版 社 | 出版时间 | 教材情况(打√) | ||||||||
数据结构 (C语言版|第2版) | 人民邮电出版社 | 2021.10 | 省部级以上þ 优秀þ 精品□ 其他□ | |||||||||
参考书目 | 名 称 | 出 版 社 | 出版时间 | 教材情况(打√) | ||||||||
数据结构习题解析与实验指导 | 人民邮电出版社 | 2017.8 | 省部级以上□ 优秀þ 精品¨ 其他□ | |||||||||
数据结构与算法分析C语言描述 | 机械工业出版社 | 2017.1 | 省部级以上¨ 优秀þ 精品□ 其他□ | |||||||||
数据结构与算法分析 | 机械工业出版社 | 2016.8 | 省部级以上□ 优秀þ 精品□ 其他þ | |||||||||
程序员学数据结构 | 人民邮电出版社 | 2018.7 | 省部级以上□ 优秀þ 精品□ 其他þ | |||||||||
考核方式 | 笔 试 | 成绩评定方式 | 平时50%(含实验)+期末50% | |||||||||
课时安排 | 从第1周至第18周 | |||||||||||
周次 | 课次 | 教 学 内 容 | 教 学 目 标 或 要 求 | |||||||||
一 | 1 | 第0章课程导学 第1章绪论 | 1、结合时事热点讨论、课前问卷调查分析 2、说课:课程性质、地位、主要内容、如何学、如何考,上课要求 3、数据结构的概念、研究对象。 4、掌握各种基本术语的含义、区别与联系。 5、掌握基本的数据结构类型和它们的主要特点,并能举例。 | |||||||||
2 | 第1章 绪论 | 1、理论:掌握计算语句频度和估算算法时间复杂度、空间复杂度的方法。 2、上机实验: 从C过渡到C++ |
周次 | 课次 | 教 学 内 容 | 教 学 目 标 或 要 求 |
二 | 1 | 2.1 线性表的定义和特点 2.2 案例引入 2.3 线性表的类型定义 2.4 线性表的顺序表示和实现 2.4.1线性表的顺序存储表示 | 1、掌握线性表的逻辑结构特性。 2、掌握线性表的类型定义及其应用 3、熟练掌握线性表的顺序存储结构的描述方法 4、熟练掌握顺序表的各种基本操作算法。 |
2 | 2.4.2顺序表基本操作的实现 上机实验一:线性表的应用(1) | 1、掌握顺序表的定义; 2、掌握顺序表的基本操作,如建立、查找、插入和删除等。 | |
三 | 1 | 2.5线性表的链式表示和实现 2.5.1单链表的定义和表示 2.5.2单链表基本操作的实现 | 1、熟练掌握线性表的链式存储结构的描述方法 2、熟练掌握链表各种基本操作的算法。 |
2 | 2.7 线性表的应用 上机实验一:线性表的应用(2) | 掌握单链表的基本操作,如建立、查找、插入和删除等。 | |
四 | 1 | 2.5.3循环链表 2.5.4双向链表 2.6 顺序表和链表的比较 | 1、掌握循环链表及双向链表的特性,循环链表的特殊操作:插入、删除 2、分析顺序表和链表的优缺点,能够辨别使用场景; |
2 | 3.1 栈 3.2 案例引入 3.3 栈的表示和操作的实现 | 1、栈的定义,修改原则和例子; 2、栈的顺序存储结构实现基础操作; | |
五 | 1 | 3.4栈与递归 | 1、采用递归算法解决的问题; 2、栈的表达式求值原理; 3、栈的表达式求值实例。 |
2 | 上机实验二: 栈的应用 | 1、栈的链式存储结构实现基础操作; 2、栈的表达式求值实例; 3、汉诺塔的递归实现。 | |
六 | 1 | 第4章 串、数组和广义表 | 1、了解数组及相关操作; 2、了解串及相关操作; 3、了解广义表的定义及存储结构。 |
2 | 3.5队列的表示和操作的实现 上机实验三:队列的应用 | 1、掌握队列的结构特点及其两种存储结构; 2、掌握队列在链式存储结构下实现基本操作的算法; 3、熟悉队列的应用。 | |
七 | 1 | 清明节放假 | |
2 | 清明节放假 |
周次 | 课次 | 教 学 内 容 | 教 学 目 标 或 要 求 |
八 | 1 | 5.1树和二叉树的定义 5.2 案例引入 5.3树和二叉树的抽象数据类型定义 5.4二叉树的性质和存储结构 | 1、掌握树型结构的定义、各个基本术语以及树的各种表示方法; 2、掌握二叉树的基本概念、基本形态和性质。 |
2 | 5.5.1遍历二叉树 5.5.2线索二叉树 | 1、熟悉二叉树遍历算法的应用; 2、了解线索二叉树的概念与建立。 | |
九 | 1 | 5.6.1树的存储结构 5.6.2 森林与二叉树的转换 5.6.3 树和森林的遍历 | 1、熟悉树的存储结构; 2、深刻理解树、森林与二叉树之间的转换。 |
2 | 上机实验四:二叉树的基本操作 | 1、掌握二叉树的定义; 2、掌握二叉树的基本操作,如二叉树的建立、遍历、结点个数统计、树的深度计算等。 | |
十 | 1 | 5.7 Huffman树及其应用 | 1、掌握如何建立哈夫曼树; 2、熟悉哈夫曼树在编码、判定问题中的应用; 3、掌握程序构造哈夫曼树的方法、流程。 |
2 | 上机实验五:哈夫曼编码基本操作演示程序的设计与实现 | 1.掌握哈夫曼树的定义和构造方法; 2.掌握哈夫曼编码的方法及应用。 | |
十一 | 1 | 6.1图的定义和基本术语 6.2 案例引入 6.3图的类型定义 6.4图的存储结构 | 1、了解图的基本术语; 2、熟悉图的各种存储结构及使用原则; 3、掌握图邻接矩阵与邻接表存储结构。 |
2 | 6.5 图的遍历 上机实验六:图的遍历操作演示程序的设计与实现 | 1、掌握图的深度优先搜索算法; 2、掌握图的广度优先搜索算法; 3、掌握图的定义和构造方法; 4、掌握图的存储及遍历方法及应用。 | |
十二 | 1 | 6.6图的应用 6.6.1 最小生成树 6.6.3 拓扑排序 6.6.4 关键路径 | 1、掌握生成树概念; 2、图的最小生成树prim算法和Kruskal算法。 3、了解拓扑排序的概念、理解拓扑排序的应用、熟悉拓扑排序的算法流程; 4、了解关键路径的概念、理解关键路径的应用、熟悉关键路径的算法流程。 |
2 | 上机实验七:最小生成树两种算法的设计与实现 |
3、掌握最小生成树的定义和构造方法; 4、掌握最小生成树的两种常用生成算法及效率分析。 | |
十三 | 1 | 6.6.2最短路径 6.6.3 拓朴排序 6.6.4关键路径 | 1、了解最短路径的概念; 2、理解单源最短路径的Dijkstra算法; 3、掌握拓扑排序的过程、实现; 4、掌握关键路径的求解过程。 |
2 | 实验项目八:校园导游系统的设计与实现 | 1、掌握最短路径的定义和求最短路径的方法; 2、掌握最短路径的实际应用方法。 |
周次 | 课次 | 教 学 内 容 | 教 学 目 标 或 要 求 |
十四 | 1 | 7.1 查找的基本概念 7.2 线性表的查找 | 1、熟悉关于查找的基本概念; 2、掌握顺序查找、二分查找的特点及算法。 |
2 | 7.3.1 二叉排序树 7.3.2 平衡二叉树 7.3.3 B-树 | 1、掌握二叉排序树概念、基本操作; 2、熟悉二叉排序树的删除过程; 3、掌握平衡二叉树概念及建立过程; 4、了解B-树的定义、查找、插入和删除的方法。 | |
十五 | 1 | 7.4 散列表的查找 | 掌握散列查找相关概念,过程及原理。 |
2 | 上机实验九: 查找基本操作的实现 | 1、通过查找实验理解查找的基本算法; 2、熟悉各种查找方法的适用场合及平均查找长度; 3、掌握静态查找和动态查找的区别; 4、掌握顺序查找、二分查找的基本思想及其算法; 5、掌握二叉排序树上的查找算法。 | |
十六 | 1 | 8.1 基本概念和排序方法概述 8.2 插入排序 | 1、掌握数据排序概念,理解排序指标的意义; 2、掌握直接插入排序的算法过程; 3、了解折半插入排序的特点、性能,适用场合; 4、了解希尔插入排序的特点、性能,适用场合。 |
2 | 8.3 交换排序 8.4 选择排序
| 1、掌握交换排序的算法过程; 2、掌握冒泡排序的特点、性能,适用场合和效率分析; 3、掌握快速排序的特点、性能,适用场合和效率分析; 4、掌握选择排序的特点、性能,适用场合。 | |
十七 | 1 | 8.5归并排序 8.6基数排序 8.8各种排序总结 | 1、掌握归并排序的算法过程; 2、掌握基数排序的算法过程; 3、掌握各种排序的特点、性能,综合比较,会在适当场合选用。 |
2 | 上机实验十:各种排序操作的实现
| 1、掌握各类排序方法的特点; 2、握各类排序方法的算法; 3、掌握各类排序方法的效率分析和应用场合。 | |
十八 | 1 | 总复习 | 全面复习 |
2 | 机动:整理实验报告 | 整理实验报告 |