数据结构专升本补习课件_第1页
数据结构专升本补习课件_第2页
数据结构专升本补习课件_第3页
数据结构专升本补习课件_第4页
数据结构专升本补习课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构专升本补习主讲:王晓斌目 录复习提纲各章基本要求习题选解考题解析第一部分复习提纲第一章 绪 论一. 基本概念和术语 1. 数据 2. 数据元素 3. 数据对象 4. 数据结构及其形式化描述 DS(,) 5. 四种基本数据结构 6. 数据类型第一章 绪 论二. 算法描述三. 算法的基本特性及“好”算法的特征四. 简单时间复杂度的分析第二章 线性表一. 线性表的逻辑结构及基本操作二. 顺序存储结构及其特点CONST maxlen=线性表可能达到的最大长度;TYPE sqlisttp=RECORD elem:ARRAYmaxlen OF elemtp; last:0maxlen END;第二

2、章 线性表三. 单链表及其特点TYPE pointer=nodetype; nodetype=RECORD data:elemtp; next:pointer END; linkisttp=pointer;第二章 线性表四. 循环链表、双向链表及其特点五. 一元多项式的单链表表示六. 难点 1. 顺序存储结构编写算法时注意事项 2. 单链表的建立 3. 单链表中前驱结点的记录 4. 双向链表中插入结点时的语序第三章 栈和队列一. 栈的特点及基本操作二. 栈的应用(读写递归算法时注意事项)三. 队列的特点及基本操作四. 循环队列:队空、队满的判定第五章 数组和广义表一. 数组及其操作二. 数组元

3、素的存放方式及存储地址的计算三. 广义表的定义、性质及操作第六章 树和二叉树一. 基本概念二. 二叉树的性质三. 二叉树的存储结构四. 二叉树的遍历五. 树、森林和二叉树之间的转换六. 哈夫曼树的构造第七章 图一. 图的基本术语二. 图的存储结构:邻接矩阵、邻接表三. 一定存储结构下图的遍历四. 图的典型应用 1. 最小生成树 2. 拓扑排序 3. 关键路径 4. 最短路径第九章 查找一. 基本术语二. 顺序表查找:顺序、折半、分块三. 二叉排序树及其构造四. Hash表的构造第十章 内部排序一. 基本概念 1. 排序 2. 排序方法的稳定性二. 排序方法的基本思想三. 会模拟排序过程四. 能

4、够读懂排序算法第二部分各章基本内容第三部分习题选解第一章 习题设n为正整数,试确定下列程序段中各语句的频度。1. (1) count:=0; 1 (2) FOR i:=1 TO n DO n+1 (3) FOR j:=1 TO i DO (i+1) (4) FOR k:=1 TO j DO (j+1) (5) count:=count+1; jni=1j=1ini=1nii=1j=1第一章 习题2. (1) FOR i:=2 TO n DO n (2) FOR j:=2 TO i-1 DO n(n-1)/2 (3) x:=x+1; (n-2)(n-1)/2第二章 习题. 写算法, 将单循环链表

5、逆转。PROC ex2_3(ls:linkisttp); p:=ls.next; ls.next:=ls; WHILE pls DO q:=p.next; p.next:=ls.next; ls.next:=p; p:=q ENDP; ex2_34. 试写出在单链表中搜索x的算法。若x存在表中,则输出它在表中的序号;否则将x插在表尾。PROC exam1(la:linkisttp;x:elemtp):integer; pre:=la; p:=la.next; j:=1; WHILE (pNIL CAND p.datax) DO 【 pre:=p; p:=p.next; j:=j+1 】; IF

6、 (pNIL) THEN RETURN(j) ELSE 【 new(s); s.data:=x; s.next:=NIL; pre.next:=s; RETURN(0) 】ENDP;第二章 习题5. 两个集合用线性表表示,采用单链表作为存储结构,且其中元素递增有序,编写求两个集合交集的算法。PROC exam2(la,lb:linkisttp;VAR lc:linkisttp); new(lc); pc:=lc; pa:=la.next; pb:=lb.next; WHILE (paNIL AND pbNIL) DO IF pa.data=pb.data THEN 【new(s);s.data

7、:=pa.data; pc.next:=s; pc:=s; pa:=pa.next; pb:=pb.next 】 ELSE IF pa.datapb.data THEN pa:=pa.next ELSE pb:=pb.next; pc.next:=NILENDP;第二章 习题第三章 习题第三章 习题试写一个判断表达式中圆括号是否配对出现的算法。假设表达式存于数组a1.n中,且a是字符数组FUNC ex3_2(a:ARRAY1.n OF char;n:integer):boolean; INISTACK(S);PUSH(S,#); FOR i:=1 TO n DO IF ai=( THEN PU

8、SH(S,ai); IF ai=) THEN x:=POP(S); IF x( THEN RETURN(false) ; x:=POP(S); IF EMPTY(S) AND x=# THEN RETURN(true) ELSE RETURN(false)ENDF; ex3_2 第三章 习题假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),试编写相应的置空队列、入队列和出队列的算法。(1)置空队列PROC clear(VAR rear:linkisttp); p:=rear.next; p.next:=p; rear:=pENDP;第三章 习题(2)入队列操作PRO

9、C add(VAR rear:linkisttp;x:elemtp); new(s);s.data:=x; s.next:=rear.next; rear.next:=s; rear:=sENDP;第三章 习题(3)出队列函数FUNC del(VAR rear:linkisttp):elemtp; IF rear.next=rear THEN RETURN(NULL); h:=rear.next; x:=h.next.data;q:=h.next; h.next:=q.next; IF h.next=h THEN rear:=h; dispose(q);RETURN(x)ENDF;4. 假设s

10、equ0.m-1存放循环队列的元素,同时设rear和quelen分别指示循环队列中队尾元素的位置和包含的元素个数。试给出此循环队列的队空和队满条件,并编写相应的入队和出队算法。假定形式描述循环队列为TYPE sqRECORD sequ:ARRAY0.m-1 OF elemtp; rear,quelen:integer END;第三章 习题(1)队满条件:q.quelen=m 队空条件:q.quelen=0(2)入队算法PROC add_sq(VAR q:sq;x:elemtp); IF q.quelen=m THEN ERROR(overflow); q.rear:=(q.rear+1) MO

11、D m; q.sequq.rear:=x; q.quelen:=q.quelen+1ENDP;(3)出队算法FUNC add_sq(VAR q:sq):elemtp; IF q.quelen=0 THEN 【 ERROR(队列为空); RETURN(NULL) 】; front:=(q.rear-q.quelen+m) MOD m; j:=(front+1) MOD m; y:=q.sequj; q.quelen:=q.quelen-1; RETURN(y)ENDF;第五章 习题 1设有数组B,按行主顺序存放在1000开始的连续空间中,若元素长度为2,试计算,和B,元素的起始地址,并请回答至少

12、给B数组分配多少个存储单元? 解:(1)B,的存储位置 LOC-1,3,4=1000+(-1-(-1)*(5-0+1)*(4-(-2)+1)+(3-0)*(4-(-2)+1)+(4-(-2)*2 =1054 ,的存储位置 LOC0,0,0=1000+(0-(-1)*(5-0+1)*(4-(-2)+1)+(0-0)* (4-(-2)+1)+(0-(-2)*2 =1088()分配给数组B的单元数至少为()*()*()*420 4. 一棵n个结点的完全二叉树采用顺序存储结构,试写一非递归算法实现对该树的前序遍历。类型描述:CONST maxsize=;TYPE sqbitree=ARRAY1.max

13、size OF elemtp;PROC exam4(bt:sqbitree;n:integer); j:=1; INISTACK(S); WHILE j=n OR NOT EMPTY(S) DO IF j=n THEN 【 visite(btj); PUSH(S,j); j:=2*j 】 ELSE 【 j:=POP(S); j:=2*j+1 】ENDP;第七章习题1. 对如下有向图: 试写出:(1)邻接矩阵 (2)邻接表 (3)以顶点1出发按深度 和广度优 先搜 索遍历 图的顶点序列0 1 1 0 00 0 0 0 10 1 0 1 00 0 0 0 00 0 1 1 0 1234523524

14、34DFS:12534BFS:12354 2. 对如下无向图: 试写出: (1)邻接矩阵 (2)邻接表 (3)以顶点1出发按深度 和广度 优 先搜 索遍历 图的顶点序列第七章习题0 1 1 0 01 0 1 1 11 1 0 0 10 1 0 0 10 1 1 1 0 123452311223DFS:12354BFS:12345 3455254第七章习题3. 对如下无向图,分别用Prim和Kruskal算法求最小生成树62174112191010836642836(1)Prim方法62174112191010836642836(2)Kruskal方法62174112191010836第七章习题

15、4. 对如下AOE网,求出各事件的ve, vl和各活动的l和e。并指出关键路径。a4=3a2=6a3=7a1=8a5=10a6=10a7=9a8=13a12=2a9=6a11=8a10=19a4=3a2=6a3=7a1=8a5=10a6=10a7=9a8=13a12=2a9=6a11=8a10=19计算结果为:顶点 Ve Vl 活动 弧 持续T e l l-e 关键活动 V1 0 0 a1 8 0 5 5 V2 8 13 a2 6 0 0 0 a2 V3 6 6 a3 7 0 9 9 V4 16 16 a4 3 8 13 5 V5 7 16 a5 10 6 6 0 a5 V6 20 29 a6

16、 10 6 17 11 V7 16 27 a7 9 7 18 11 V8 35 35 a8 13 7 16 9 a9 6 20 29 9 a10 19 16 16 0 a10 a11 8 16 27 11 a12 2 16 27 11 Max + Min -第七章习题5. 对下图,写出拓扑有序序列及入度域变化过程a1a2a4a3a5a6a1a2a4a3a5a6a1a2a3a3a4a4a5a6a3a5a5a6a3a6a2a4a5a6第九章习题 1、在算法binsrch 中,若做下述一个修改,能否正确工作:(1)将“low:=mid+1”改为“low:=mid”;(2)将“high:=mid-1”

17、改为“high:=mid”;试分别用修改后的算法,在有序表069,087,094,127,148,199,254,271,301,355中查找k=199和k=084并得出结论。设k=199 第一次:low=1,high=10,mid=5 第二次:low5,high10,mid7 第三次:low5,high7,mid6成功!设k=084 第一次:low=1,high=10,mid=5 第二次:low1,high5,mid3 第三次:low1,high3,mid2 第四次:low1,high2,mid1 第五次:low1,high2,mid1死循环!069,087,094,127,148,199,

18、254,271,301,355 1 2 3 4 5 6 7 8 9 10第九章习题 2、现有R1 R2 R3 R4 R5 R6共6个记录依次存入哈希表A,表A共有6个存储单元,地址为05。某哈希函数结果为: H(k1)=H(k2)=2 H(k3)=H(k4)=0 H(k5)=H(k6)=5用线性探测再散列解决冲突。试写出各记录存入时, 表A的状态。R1012345R3R1R2R6R5R4R1R2R3 R1R2R3R1R2R4R3R1R2R5R4第十章习题1。判断以下序列是否为堆。如果不是,则把它调整为堆。(1)100,86,48,73,35,39,42,57,66,21(2)12,70,33,65,24,56,48,92,86,33(1)100,86,48,73,35,39,42,57,66,21 100 86 48 73 35 39 4257 66 21 是堆(2)12,70,33,65,24,56,48,92,86,33 12 70 33 65 24 56 4892 86 33 不是堆调整后:12,24,33,65,33,56,48,92,86,70 12 24 33 65 33 56 4892 86 70 第十章习题2。以单链表为存储结构实现直接插入排序,排序的结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论