如果想学好程序设计,一定要学会《数据结构》课程。在大数据(Big Data)时代,数据量大且复杂多样,如何实现快速分析处理,发现其中潜在的价值,一直是科研人员关注的问题。《数据结构》课程面向程序设计时的数据对象,分析数据元素之间的逻辑结构,探讨数据元素的存储方法,了解常用算法并评估各种算法的性能。在课程中,将讨论数据元素之间的线性结构、非线性结构以及集合上的查找与排序方法。学习该课程有助于学习者获得数据抽象能力,能够从逻辑上组织数据并采取合适的存储方法,进而设计出满足实际需求的高效算法,为将来利用人工智能方法从大数据中快速发现潜在的价值奠定坚实的技术基础。本课程合理组织传统《数据结构》的内容,精简提炼重要和关键知识点,兼顾知识的基础性、实践性和可扩展性。由于该课程的理论性和实践性都很强,为此编写了覆盖主要知识点的习题和测验,以及强化学生实践能力的、难度适中的算法设计题。相信学习者通过线上和线下认真学习,一定能够在较短的时间内掌握数据结构知识。
1. 在程序设计时能够分析数据元素之间存在的逻辑结构,并能够选择和设计合适的存储结构;
2. 掌握线性表、栈、队列、数组、树和图等常用数据结构的逻辑结构、存储结构及相关操作;
3. 理解并能够根据实际场景灵活运用各种查找和排序算法;
4. 能够从时间复杂度和空间复杂度的视角分析与评估算法。
每章后都有单元测验和单元作业,并且指定了完成时限,请同学们按时完成。这将是平时成绩(占总成绩的30%)的一部分。
第一章 绪论
1.1 数据结构的概念
1.2 抽象数据类型表示和实现
1.3 算法和算法分析
单元测试一
单元作业一
第二章 线性表
2.1 线性表的类型定义
2.2 线性表顺序表示和实现
2.3 线性表链式表示和实现
单元测验二
单元作业二
第三章 栈与队列
3.1 栈
3.2 队列
单元测试三
单元作业三
第四章 串
4.1 串类型的定义
4.2 串的表示和实现
单元测试四
单元作业四
第五章 数组与广义表
5.1 数组的定义和存储结构
5.2 广义表的定义和存储结构
单元测试五
单元作业五
第六章 树和二叉树
6.1 树与二叉树的基本概念
6.2 遍历二叉树和线索二叉树
6.3 树和森林
6.4 哈夫曼树与哈夫曼编码
单元测验六
单元作业六
第七章 图
7.1 图的定义与术语
7.2 图的存储结构
7.3 图的遍历
7.4 图的连通性
7.5 有向图的应用
单元测试七
单元作业七
第八章 查找
8.1 查找的概念与术语
8.2 静态查找表
8.3 动态查找表
8.4 哈希表
单元测试八
单元作业八
第九章 内部排序
9.1 排序概述
9.2 插入排序
9.3 快速排序
9.4 选择排序
9.5 归并排序
9.6 基数排序
单元测试九
单元作业九
具有C语言程序设计基础,特别需要理解数组、指针、结构体的概念及其应用。
理解C++语言程序设计中引用的概念,在函数设计时经常采用参数的引用传递。
1.严蔚敏, 吴伟民, 《数据结构(C语言版)》, 清华大学出版社.
2.Mark Allen Weiss, Data Structures and Algorithm Analysis in C, China Machine Press.
3. Mark Allen Weiss 著, 冯舜玺 译, 数据结构与算法分析:C语言描述, 机械工业出版社.