从本质上讲,数据结构属于编程类的课程,是程序设计语言课程的进阶篇。首先,程序是对数据的操作,由输入产生输出。对于比较复杂的数据,就需要从数据结构的角度来组织和存储数据,如采用数组还是链表存储结构更加高效;另外,对于比较复杂的数据操作,就需要采用一些特定的数据结构来求解,如判断一个表达式中的括号是否匹配,就需要采用栈来处理。所以数据结构课程中讲解人们在软件开发中常见的各种数据结构,并从逻辑结构到存储结构,再到运算算法设计3个层面加以学习。
程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学生学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。
从计算机科学专业的课程设置来看,数据结构是重要的专业基础课。在计算机软件类课程体系中处于承上启下的核心地位,它一方面扩展和深化在离散数学、程序设计语言等课程学到的基本技术和方法,另一方面为进一步学习其他专业课(如算法设计与分析、操作系统、软件工程等)奠定坚实的理论与实践基础。
第1周 绪论
第1讲―数据结构总览
第2讲―什么是数据结构
第3讲―数据结构求解问题的过程
第4讲―算法及其描述
第5讲―算法分析基础
第6讲―其他情况的算法分析
第7讲-本周小结
第2周 线性表(上)
第1讲―线性表的基本概念
第2讲―线性表的顺序存储结构
第3讲―顺序表算法设计
第4讲―单链表
第5讲―单链表的算法设计
第6讲-本周小结
第3周 线性表(下)
第1讲―双链表
第2讲―循环链表
第3讲―线性表的应用
第4讲―有序表
第5讲-本周小结
第4周 栈和队列
第1讲―栈的定义和顺序栈
第2讲―链栈
第3讲―队列的定义和顺序队
第4讲―链队
第5讲―栈和队列求解迷宫问题
第6讲-本周小结
第5周 串
第1讲―串的概念和存储结构
第2讲―串的模式匹配
第3讲-本周小结
第6周 递归
第1讲―什么是递归
第2讲―递归算法的设计
第3讲-本周小结
第7周 数组和稀疏矩阵
第1讲―数组
第2讲―稀疏矩阵
第3讲-本周小结
第8周 树和二叉树(上)
第1讲―树的概念
第2讲―树的运算和存储结构
第3讲―二叉树的概念
第4讲―二叉树的存储结构
第5讲―二叉树基本运算及其实现
第6讲-本周小结
第9周 树和二叉树(下)
第1讲―二叉树的遍历
第2讲―二叉树遍历的应用
第3讲―二叉树的构造
第4讲― 线索二叉树
第5讲―哈夫曼树
第6讲-本周小结
第10周 图(上)
第1讲―图的概念
第2讲―图的存储结构
第3讲―图的遍历
第4讲―图遍历的应用
第5讲-本周小结
第11周图(下)
第1讲―最小生成树和Pim算法
第2讲―求最小生成树的Kruskal算法
第3讲―最短路径和Dijkstra算法
第4讲―求最短路径的Floyd算法
第5讲―拓扑排序
第6讲―求关键路径
第7讲―小算法解决大问题
第8讲-本周小结
第12周 查找
第1讲―查找的概念
第2讲―线性表的查找
第3讲―二叉排序树
第4讲―平衡二叉树
第5讲―B树和B+树
第6讲―哈希表的查找
第7讲-本周小结
第13周 内排序
第1讲―排序的概念
第2讲―插入排序
第3讲―交换排序
第4讲―选择排序
第5讲―归并排序
第6讲―基数排序
第7讲―內排序的比较
第8讲-本周小结
第14周 外排序
第1讲―外排序概述
第2讲―磁盘排序―生成初始归并段
第3讲―磁盘排序―多路平衡归并
第4讲―磁盘排序―最佳归并树
第5讲-本周小结

