1、第一章 基本数据结构与算法,考试大纲要求,1.算法的基本概念;算法复杂度的概念和意义(时间复杂度和空间复杂度) 2.数据结构的定义;数据的逻辑结构和存储结构;数据结构的图形表示;线性结构与非线性结构 3.线性表的定义;线性表的顺序存储结构及其插入和删除 4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算 5.线性单链表、双向链表与循环列表的结构及其基本运算 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序,中序和后序遍历 7.顺序查找与二分法查找算法 8.基本排序方法(选择类,插入类,交换类),1.1.1算法的基本概念,算法概念:所谓算法是指解题方案的准确而完整的描述1.算法的基本
2、特征可行性、确定性、有穷性、拥有足够的情报2.算法的基本要素(1)算法对数据的运算和操作(2)算法的控制结构 :三种基本的控制结构顺序,选择,循环3.算法设计的基本方法列举法,归纳法,递推,递归,回溯法,1.1.2算法的复杂度,1.算法的时间复杂度执行算法所需要的计算工作量即算法执行过程中所需要的基本运算次数用问题规模函数:f(n)来描述算法的工作量=f(n) 2.算法的空间复杂度执行此算法所需要的内存空间,1.2数据结构的基本概念,概念:数据结构(data structure)数据结构是计算机存储、组织数据的方式。 主要解决三个问题 (1)逻辑结构:数据集合中各数据元素之间固有的逻辑关系 (
3、2)存储结构(物理结构):对数据进行处理时,各数据元素在计算机中的存储关系 (3)对各种数据结构进行的运算:插入 ,删除,查找,排序等,1.2.1线性结构与非线性结构,按照逻辑结构来分 线性结构特点:(1)有且只有一个根结点 (2)每一个结点最多有一个前件,也最多有一个后件 Eg:栈和队列 非线性结构:相对应的即为非线性结构 Eg:树和图,1.2.2线性表的存储结构,1。顺序存储 : (1)线性表中所有元素所占的存储空间是有序的 (2)各元素在存储空间中是按逻辑顺序依次存放的便于实现随机查找时间复杂度为f(1) 2。链表存储:便于实现插入删除操作。在物理内存中各数据元素的存储位置不需要是连续的
4、存储空间,1.3 栈和队列,栈:先进后出(FILO)后进先出(LIFO)的线性表,操作限定到一端的线性表 队列:先进先出(FIFO)后进后出(LILO)的线性表,1.3.1栈的基本操作,1.栈的顺序存储及其运算:通过top和bottom两个指针来完成(1)入栈(2)退栈(3)读栈顶元素 2.栈的链表存储及其运算,1.3.2队列,1.队列的基本操作 通过两个指针front ,rear完成(1)入队操作(2)退队操作(3)计算队列中元素个数 2.循环队列 考察运算:元素个数(1)初始状态rear=front(2)元素个数=(rear-front+m)%m,1.4树与二叉树,简单讲就是具有层次感的数
5、据结构称为树 特点,每个结点只有一个前件 根结点:没有前件的结点 叶结点:没有后件的结点 空树:没有结点 树的深度:树的最大深度 结点的度:一个结点所拥有的后件个数 树的度:结点度中的最大值称为树的度,1.4.1二叉树及其基本性质,二叉树首先是树有自己特点的树(1)非空二叉树只有一个根结点(2)每一个结点最多有两棵子树,分别称为该结点的左子树和右子树 二叉树的基本性质(1)在二叉树中,第i层的结点总数不超过2(i-1); (2)深度为h的二叉树 最多有(2h)-1个结点(h=1),最少有h个结点; (3)对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2, 则N0=N2+1;
6、 (4)具有n个结点的完全二叉树的深度为int(log2n)+1 满二叉树与完全二叉树满二叉树:除了叶结点外每一个结点都有左右子结点且叶结点都处在最底层的二叉树完全二叉树:完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点 满二叉树的性质(1)k层上有2(k-1)个结点(2)深度为m的满二叉树有2m-1个结点 完全二叉树的性质(1)具有n个结点的完全二叉树深度为log2n+ 1或log2(n+1)。,1.5排序,1.交换类(1)冒泡排序(2)快速排序 1.2插入类(1)简单插入排序(2)希尔排序 1.3选择类(1)简单选择排序(2)堆排序,