数据结构基础复习.ppt
《数据结构基础复习.ppt》由会员分享,可在线阅读,更多相关《数据结构基础复习.ppt(115页珍藏版)》请在三一办公上搜索。
1、数据结构考研辅导 基础复习,浙江大学计算机学院,内容提纲,考研概述,考察目标理解数据结构的基本概念:掌握数据结构的逻辑结构、存储结构及其差异,以及各种基本操作的实现。在掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。能够选择合适的数据结构和方法进行问题求解。,考研概述,考试形式整卷满分为150分,考试时间为180分钟数据结构占45分,估计用时4550分钟单选题:40题2分/题,估计占10题20分左右,建议用时不超过2分钟/题综合题:70分,估计占2题共2025分,建议用时不超过10分钟/题,考研概述,复习计划基础理论复习例题详解题目范围:真题1套+模拟题9套+补充题模拟题第10
2、套将用于最后一天模拟考试,6,基础内容复习数据结构(C语言版),严蔚敏、吴伟民,清华大学出版社,线性表、堆栈、队列、数组树与图查找与排序,线性表、堆栈、队列、数组,线性表定义:n个数据元素的有限序列基本操作:随机访问、插入、删除、前驱、后继、倒序等实现方式:顺序存储:数组,Loc(ai),Loc(ai+1)=Loc(ai)+l,Loc(ai)=Loc(a1)+?,(i-1)*l,线性表实现方式:顺序存储:数组,线性表、堆栈、队列、数组,是一种随机存取的存储结构,方便随机存取第i个数据元素,插入、删除复杂度为O(n),需要移动大量元素,自测题在n个结点的顺序表中,算法的时间复杂度是O(1)的操作
3、是:访问第i个结点(1in)和求第i个结点的直接前驱(2in)在第i个结点后插入一个新结点(1in)删除第i个结点(1in)将n个结点从小到大排序,线性表、堆栈、队列、数组,线性表、堆栈、队列、数组,线性表实现方式:链式存储:链表,线性链表,头指针H=19,若 p-data=ai 则 p-next-data=ai+1,typedef struct LNode ElemType data;struct LNode*next;LNode,*LinkList;,有时附加头结点,自测题线性表若采用链式存储结构时,要求内存中可用存储单元的地址:必须是连续的部分地址必须是连续的一定是不连续的连续或不连续都
4、可以,线性表、堆栈、队列、数组,线性表、堆栈、队列、数组,线性表实现方式:链式存储:链表 线性链表,插入、删除复杂度为O(1),仅需修改指针而不需要移动元素,是一种非随机存取的存储结构,不方便随机存取第i个数据元素,*静态链表(p.31-35),自测题下面的叙述不正确的是()线性表在链式存储时,查找第i个元素的时间同i的值成正比线性表在链式存储时,查找第i个元素的时间同i的值无关线性表在顺序存储时,查找第i个元素的时间同i 的值成正比线性表在顺序存储时,查找第i个元素的时间同i的值无关,线性表、堆栈、队列、数组,自测题在一个单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行:
5、s-next=p;p-next=s;s-next=p-next;p-next=s;s-next=p-next;p=s;p-next=s;s-next=p;,线性表、堆栈、队列、数组,自测题在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是:p=p-next;p-next=p-next-next;p-next=p;p=p-next-next;,线性表、堆栈、队列、数组,x,p,线性表、堆栈、队列、数组,线性表实现方式:链式存储:链表 循环链表,双向链表,有时设尾指针可简化某些操作,如两表合并。,自测题设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。单链表
6、 单循环链表 带尾指针的单循环链表 带头结点的双循环链表,线性表、堆栈、队列、数组,自测题将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?单链表 单循环链表 带尾指针的单循环链表 带头结点的双循环链表,线性表、堆栈、队列、数组,tmp=La-next;La-next=Lb-next;Lb-next=tmp;,19,线性表、堆栈、队列、数组,线性表练习1:分别实现数组、单链表、循环链表、双向链表的插入和删除操作。练习2:实现单链表的原地逆转。练习3:分别用一元多项式的两种表示实现多项式加法。,自测题给定2个带有表头结点的单链表的头指针L1和L2,结点
7、结构为。假设这2个链表的结点已经按Data域递增有序,请设计算法把它们合并成一个按Data域递增有序的链表。注意:算法不能使用额外的结点空间。,线性表、堆栈、队列、数组,算法思路为顺序比较L1和L2当前所指的两结点的Data域,将小的那个结点从原链表摘除,贴到合并链表的尾部。如此进行到至少其中一个链表为空。若此时另一个链表不为空,则将另一个链表整个贴到合并链表的尾部。注意原始2个链表有2个头结点,合并后只保留一个,需要释放另一个的空间。,List MergeSortedLists(List L1,List L2)List L=L1;List Tail=L2;L1=L1-Next;L2=L2-N
8、ext;free(Tail);Tail=L;/释放第二个链表的表头,并将新链表的表尾指针Tail初始化while(L1,自测题给定2个带有表头结点的单链表的头指针L1和L2,结点结构为。假设这2个链表的结点已经按Data域递增有序,请设计算法把它们合并成一个按Data域递减有序的链表。注意:算法不能使用额外的结点空间。,线性表、堆栈、队列、数组,解题的基本思路不变,只要将原来的表尾插入改为表头插入即可。当然,当其中一个链表为空而另一个链表不为空时,不能直接将剩余链表贴到表尾,而必须将剩余结点一个一个插入表头。,自测题若L1和L2是有序数组,其结点已经按Data域递增有序,请设计算法把它们合并成
9、一个按Data域递增有序的数组。注意:要求将L2并入L1,并且要求移动元素的次数尽可能少。,线性表、堆栈、队列、数组,必须事先算好合并后L1的长度,然后从L1的最终尾部向前插入元素。插入过程与前面算法类似,但是是从尾部开始比较L1和L2相应元素大小,将较大的元素先插入到后面的位置。,void MergeSortedArrays(ElementType L1,int N1,ElementType L2,int N2)int p1,p2,cur;p1=N1-1;/p1指向L1当前处理的元素位置p2=N2-1;/p2指向L2当前处理的元素位置cur=N1+N2-1;/cur指向下一个要插入的元素在L
10、1中的最终位置while(p1=0),堆栈概念:后进先出,限定仅在表尾进行插入删除的线性表。表示与实现:顺序栈:数组,top+,top-链栈:链表,top即为头指针应用:括号匹配检验、表达式求值、n阶Hanoi塔问题(典型递归)、迷宫问题,线性表、堆栈、队列、数组,自测题判定一个栈ST(最多元素为m0)为空的条件是:ST-top!=0ST-top=0ST-top!=m0ST-top=m0,线性表、堆栈、队列、数组,自测题有六个元素以6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?5 4 3 6 1 2 4 5 3 1 2 6 3 4 6 5 2 1 2 3 4 1 5 6,
11、线性表、堆栈、队列、数组,自测题若一个栈的输入序列为1,2,3,n,输出序列的第一个元素是i,则第j个输出元素是:i j 1 i j j i 1 不确定的,线性表、堆栈、队列、数组,队列概念:先进先出,限定仅在队尾进行插入、仅在队头进行删除的线性表。表示与实现:顺序队列:循环数组,(rear+1)%N,(front+1)%N链栈:链表,front为头指针,rear为尾指针应用:离散事件模拟,线性表、堆栈、队列、数组,自测题循环队列用数组A0,N1存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是:(rear-front+N)%Nrear-front+1rear-f
12、ront-1rear-front,线性表、堆栈、队列、数组,自测题栈和队列的共同特点是:都是先进后出 都是先进先出 只允许在同一端点处插入和删除 没有共同点,线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储对称矩阵:,线性表、堆栈、队列、数组,*上(下)三角矩阵同理存储,或许多存储一个常数(若另一半矩阵元素是非零常数)。,线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储m对角矩阵:,稀疏矩阵:,线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储稀疏矩阵:三元组顺序表:以行序为主序,顺序排列为三元组的1维数组,并存行数、列数、非0元个数。,typedef struct inti,j;Elem
13、Typev;Triple;typedef union TripledataMAXSIZE+1;intnrow,ncol,ntotal;Sparse_Matrix;,线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储稀疏矩阵:三元组顺序表:快速转置,对每列扫描整个数组:O(ncolntotal),如何一步到位,放入正确位置?,numcol 第col列中非0元个数;cpotcol 第col列中第1个非0元在转置矩阵中的位置;,cpot1=1;cpotcol=cpotcol-1+numcol-1;,4,2,O(ncol+ntotal),线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储稀疏矩阵:行逻
14、辑链接的顺序表:矩阵相乘,typedef struct TripledataMAXSIZE+1;intrposMAXRC+1;intnrow,ncol,ntotal;Sparse_Matrix;,各行第1个非0元在数组中的位置,设 M=A B,则有,关键:对每个A.datap,找所有B.dataq,满足(A.datap.j=B.dataq.i),将(A.datap.vB.dataq.v)累加到相应的临时行向量,最后压缩到M中。,O(ArowBcol+AtotalBtotal/Brow),线性表、堆栈、队列、数组,数组 特殊矩阵的压缩存储稀疏矩阵:十字链表:矩阵相加,计算 A+B 的复杂度为 O
15、(Atotal+Btotal),自测题设稀疏矩阵A有t个非零元素,用二维数组存储时占用m*n个单元。问稀疏矩阵的三元组表示法在什么情况下比二维数组存储节省空间?t m*nt m*n/3 t m*n/3 1t m*n 1,线性表、堆栈、队列、数组,树与图,树与二叉树的概念树的概念:度(degree);层(level)注意:根为第1层;深度(depth)结点的最大层次。二叉树的概念:左右有序性质1:第i层最多有2i-1个结点。性质2:深度为k的二叉树最多有2k-1个结点。性质3:若n0为叶子数,n2为度为2的结点数,则有 n0=n2+1。性质4:具有n个结点的完全二叉树的深度为 log2n+1。,
16、树与二叉树的概念二叉树的概念:性质5:对有n个结点且顺序编号的完全二叉树,其任一结点 i 有,树与图,二叉树的存储结构顺序存储结构:数组 仅适用于完全二叉树链式存储结构:在含有n个结点的二叉链表中有 个空链域。二叉树的遍历先序、中序、后序、层次,树与图,Parent,1,2,3,4,5,6,7,n+1,自测题一棵完全二叉树共有2435个结点,则其中度为0的结点数为?12181217 不确定812,树与图,388+210 388/2=1218,自测题在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于 2h 12h+12h 1 2h,树与图,自测题结点中序遍历为xyz的不同
17、二叉树,它有几种不同状态?3 4 5 6,树与图,自测题前序遍历和中序遍历结果相同的二叉树为 一般二叉树 只有根结点的二叉树 所有结点只有左子树的二叉树 所有结点只有右子树的二叉树,树与图,自测题前序遍历和后序遍历结果相同的二叉树为 一般二叉树 只有根结点的二叉树 所有结点只有左子树的二叉树 所有结点只有右子树的二叉树,树与图,自测题已知中序遍历和前序遍历结果,给出算法求后序遍历结果。,树与图,(1)从前序遍历结果推断该树的树根。(2)找出左子树和右子树的中序和前序遍历结果。(3)重复上述过程,找出左、右子树的根结点,并逐步往下扩展,直到生成一颗完整的二叉树。,左,左,右,右,OutPostO
18、rder(PreOrder,InOrder)/已知前序序列PreOrder、中序序列InOrder,求后序序列 1)应用前述方法,从序列PreOrder和InOrder中推断出:树的根r;左子树的前序遍历序列PreOrderLeft和中序遍历序列InOrderLeft;右子树的前序遍历序列PreOrderRight和中序遍历序列InOrderRight;2)递归OutPostOrder(PreOrderLeft,InOrderLeft);3)递归OutPostOrder(PreOrderRight,InOrderRight);4)输出 r;,自测题下面是某二叉树三种遍历的部分结果,请画出相应的
19、二叉树。前序:_B_F_ICEH_G 中序:D_KFIA_EJC_ 后序:_K_FBHJ_G_A,树与图,A,B,D,K,D,I,H,J,G,E,C,自测题在任意一颗二叉树中,任何两个叶结点在先序、中序、后序中的相对次序怎样?不变 不一样 不能确定 以上都不是,树与图,线索二叉树概念:,树与图,0:Lchild指向左孩子1:Lchild指向前驱,0:Rchild指向右孩子1:Rchild指向后继,中序遍历:A+B C D,中序线索二叉树,树与图,线索二叉树构造:中序:增加pre指针,指向刚访问过的结点后序:须增加Parent指针域优点:遍历不需要堆栈。若经常需要遍历二叉树或查找结点在遍历序列中
20、的前驱和后继,则应采用线索链表作为存储结构。,二叉排序树定义:左 根 右;左右均为二叉排序树。重要操作:查找、插入、删除(分3种情况)问题:树深与插入顺序相关,最坏情况蜕变为单支树,达到 O(n)。,树与图,平衡二叉树(AVL):保证树深 O(log n)定义:BF=D(左)D(右)。则AVL树上所有结点的BF只能是-1、0、1。旋转:单向左旋,树与图,0,平衡二叉树(AVL)旋转:单向右旋,树与图,0,平衡二叉树(AVL)旋转:双向旋转(先左后右),树与图,平衡二叉树(AVL)旋转:双向旋转(先右后左),树与图,自测题若AVL树的深度是6,则该树的最少结点数是?13172033,树与图,N6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基础 复习
链接地址:https://www.31ppt.com/p-6296852.html