数据结构Data Structure

黄静Huang Jing

目录

  • 1 第0章 课程概述
    • 1.1 课程介绍
    • 1.2 课前调查问卷
    • 1.3 学习目标
    • 1.4 教学日历
    • 1.5 课程考核
    • 1.6 课程答疑与反馈
    • 1.7 课程资料
    • 1.8 课前C语言知识巩固
    • 1.9 IT学子成长指导
    • 1.10 大学生抗疫心理情境应对指南
    • 1.11 感谢
  • 2 第1章 绪论
    • 2.1 本章学习目标与支撑资源
    • 2.2 数据结构研究的内容
    • 2.3 基本概念和术语
    • 2.4 算法和算法分析
    • 2.5 上机必学:类C语言描述算法
    • 2.6 章节测验
  • 3 第2章 线性表
    • 3.1 本章学习目标
    • 3.2 线性表的定义和特点
    • 3.3 线性表的顺序表示与实现
    • 3.4 单链表
    • 3.5 循环链表及双向链表
    • 3.6 线性表的应用
    • 3.7 上机综合实训一:线性表的基本操作
    • 3.8 章节测验
    • 3.9 课程回放
  • 4 第3章 栈和队列
    • 4.1 本章学习目标
    • 4.2 栈
    • 4.3 栈的应用举例
    • 4.4 栈与递归
    • 4.5 队列
    • 4.6 上机实训二:栈的应用
    • 4.7 章节测验
    • 4.8 课程回放
  • 5 第4章   串、数组和广义表
    • 5.1 本章学习目标
    • 5.2 串(字符串String)
    • 5.3 数组
    • 5.4 广义表
    • 5.5 章节测验
  • 6 第5章 树和二叉树
    • 6.1 本章导学
    • 6.2 树的基本概念
    • 6.3 二叉树的定义、性质和存储结构
    • 6.4 二叉树的遍历及应用
    • 6.5 线索化二叉树
    • 6.6 哈夫曼树
    • 6.7 树、森林和二叉树
    • 6.8 综合实训
    • 6.9 章节测验
  • 7 第6章 图
    • 7.1 图的定义和基本术语
    • 7.2 图的存储结构
    • 7.3 图的遍历
    • 7.4 最小生成树
    • 7.5 最短路径
    • 7.6 拓扑排序与关键路径
    • 7.7 章节测验
    • 7.8 课程回放
  • 8 第7章 查找
    • 8.1 章节导学
    • 8.2 静态表的查找
    • 8.3 树表的查找
    • 8.4 散列表的查找
    • 8.5 章节测验
  • 9 第8章 排序
    • 9.1 排序导学
    • 9.2 插入排序
    • 9.3 交换排序
    • 9.4 选择排序
    • 9.5 归并排序
    • 9.6 基数排序
    • 9.7 各种内部排序比较
    • 9.8 章节测验
  • 10 算法分析与设计
    • 10.1 第1章算法基础
    • 10.2 第2章分治算法
    • 10.3 第3章递归算法
    • 10.4 第4章贪心算法
    • 10.5 第5章回溯算法
    • 10.6 第6章动态规划算法*
    • 10.7 第7章图的基本操作
    • 10.8 Python常见问题及解决方案
教学日历
教学日历

 

                                                                                                                               

 

学时

 

分配

 
 

课程讲授

 
 

自学指导

 
 

分析讨论

 
 

专题报告

 
 

实验或实习

 
 

其他

 
 

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

 
 

机动:整理实验报告

 
 

整理实验报告