1.掌握数据结构的基本概念和术语。
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,是数据的子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:是指数据对象中数据元素之间的相互关系。
1. 集合结构 集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。
2. 线性结构 线性结构中的数据元素之间是一对一的关系。
3. 树形结构 树形结构中的数据元素之间存在一种一对多的层次关系。
4. 图形结构 图形结构的数据元素是多对多的关系。
物理结构:是指数据的逻辑结构在计算机中的存储形式。
1. 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系式一致的。
2. 链式存储结构:是把数据元素放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
2.了解抽象数据类型的概念。
数据类型:是指一组性质相同的值的集合以及在此集合上的一些操作的总称。
抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。
3.掌握算法的特性,算法的描述和算法的分析。
算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法的特性:输入输出,有穷性,确定性,可行性。
常数阶:O(1) 线性阶:O(n) 对数阶:O(logn) 平方阶:O(m*n)
算法的空间复杂度:
二、线性表
1.理解线性表的逻辑结构。
线性表:零个或多个数据元素的有限序列。
2.掌握线性表的顺序存贮结构和链式存贮结构;掌握线性表基本操作的实现。
线性表的顺序存储结构:指的是用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的链式存储结构:n个结点链结成一个链表,即为线性表的链式存储结构。
单链表:链表的每个结点只包含一个指针域。
头指针:链表中第一个结点的存储位置。
静态链表:用数组描述的链表。
循环链表:
双向链表:
3.了解线性表的应用。
三、其他线性结构
1.掌握栈的定义、栈的存贮结构及基本操作的实现。
栈:是限定仅在表尾进行插入和删除操作的线性表。
栈的顺序存储结构,栈的链式存储结构
2.理解用栈实现表达式的求值,递归过程及其实现。
3.掌握队列的定义、存贮结构及基本操作的实现
队列:是指允许在一端进行插入操作,另一端进行删除操作的线性表。
循环队列:队列的这种头尾相接的顺序存储结构。
链队列:
4.理解串的逻辑定义及其基本操作;理解串的存贮结构。
串:是由零个或多个字符组成的有限序列,又叫字符串。
KMP模式匹配算法
5.理解数组的定义、数组的顺序存贮结构及矩阵的存贮压缩。
6.理解广义表的定义及存贮结构。
四、树和二叉树
1.掌握树型结构的定义。
度:结点拥有的子树数称为结点的度。
深度:树中结点的最大层次称为树的深度或高度。
2.掌握二叉树的定义、性质及各种存贮结构。
二叉树:
完全二叉树:
性质:
3.掌握遍历二叉树、线索二叉树及其他基本操作。
前序遍历:根结点,左子树,右子树。
中序遍历:左子树,根结点,右子树。
后序遍历:左子树,右子树,根节点
层序遍历:从上到下,从左到右,逐层遍历
4.掌握树、森林与二叉树的相互转换;理解树的遍历;掌握哈夫曼树及其应用。
树转化为二叉树:
森林转化为二叉树:
二叉树转换为树:
二叉树转为森林:
树的遍历:
森林的遍历:
哈夫曼树:
压缩编码:哈夫曼编码,带权路径最小的二叉树叫哈夫曼树
五、图
1.掌握图的定义和术语。
图:
顶点,
2.掌握图的存贮结构;理解图的基本操作。
3.掌握图的遍历算法;了解利用图的遍历解决图的应用问题。
4.理解图的有关应用:求最小生成树、求最短路径、拓扑排序及关键路径等算法的基本思想。
六、查找
1.掌握静态查找表。
1.稠密索引
2.分块索引
3.倒排索引
2.掌握二叉排序树和平衡二叉树。
动态查找
3.理解B-树;了解B+树。
4.掌握哈希表。
七、内部排序
1.掌握直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序;理解基数排序。
参考书目:
1. 《数据结构》(C语言版),严蔚敏 吴伟民编著,清华大学出版社,2006.3
2. 《数据结构实用教程》(C++版),万健主编,电子工业出版社,2011.1