数据结构复习题

  1. 若元素a、b、c、d、e、f依次进栈,允许进栈、出栈操作交替进行,但不允许连续3次进行出栈操作,则不可能得到的出栈序列是(D)
    A.dcebfa        B.cbdaef        C.bcaefd        D.afedcb
    解:A.可由in,in,in,out,out,in,out,out,in,out,out得到;
    B.可由in,in,in,out,out,in,out,out,in,out,in,out得到;
    C.可由in,in,out,in,out,out,in,in,out,in,out,out得到;
    D.可由in,out,in,in,in,in,in,out,out,out得到;出现了连续3次出栈操作,所有选D
  2. 一个栈的入栈序列为1,2,3,……,n,其出栈序列是p_{1},p_{2},p_{3},...,p_{n}。若p_{2}= 3,则p_{3}可能取值的个数是多少?
    A.n-3      B.n-2     C.n-1     D.无法确定
    解:P_{3}可以取1:1进,2进,2出,3进,3出,1出,……
    P_{3}可以取2:1进,1出,2进,3进,3出,2出,……
    P_{3}可以取4:1进,1出,2进,3进,3出,4进,4出,……
    P_{3}可以取5:1进,1出,2进,3进,4出,5出,5出,……
    ……
    P_{3}可以取除了3外的任何值,共有n-1种可能。答案为C。
  3. 假设在树中,结点x是结点y的双亲时,用(x,y)来表示树边。已知一棵树的树边集合为{(e,i), (b,e), (b,d),(a,b), (g.j),(c.g), (c,f), (h,l), (c,h), (a,c)},用树型表示法表示该树,并回答下列问题:

    ①哪个是根结点?哪些是叶子结点?哪个是g的双亲?哪些是g的祖先?哪些是g的孩子?那些是e的子孙?哪些是e的兄弟?哪些是f的兄弟?
    解:根结点:a;叶子结点:d,i,f,j,l;g的双亲:c;g的祖先:a,c;g的孩子:j;e的孩子:j;e的子孙:i;e的兄弟:d;f的兄弟:g,h;
    ②b和h的层次各是多少?树的深度是多少?以结点c为根的子树的深度是多少?
    解:b的层次:2;h的层次:3;树的深度:4;以结点c为根的子树的深度:3
  4. 设有如图6-27所示的二叉树。
    写出该二叉树的先序、中序、后序遍历序列。
    解:先序遍历(根左右):a b d e h k c f g m n
    中序遍历(左根右):d b h e k a f c m g n
    后序遍历(左右根):d h k e b f m n g c a
  5. 已知一棵二叉树的先序遍历序列和中序遍历序列分别为ABDGHCEFI和GDHBAECIF,请画出这棵二叉树,然后给出该树的后序遍历序列。
    解:
  6. 已知一棵二叉树的中序遍历序列和后序遍历序列分别为dgbaekchif和gdbkeihfca,请画出这棵二叉树对应的中序线索二叉树和后序线索二叉树。
    解:
  7. 设图6-27所示的二叉树是森林F所对应的二叉树,请画出森林F
    解:

8. 假设用于通信的电文是由字符集{A,B,C,D,_ }中的字符构成,这5个字符在电文中出现的概率分别为{0.4,0.1,0.2,0.15,0.15}。
①请画出对应的huffman树(按左子树根结点的权小于等于右子树根结点的权的次序构造),并求其加权路径长度WPL。
②求出每个字符的huffman编码。
解:

9.有主串S='acabaabaabcacaabc'
模式串T='abaabcac'
(1)计算模式串T的next数组
(2)画出利用KMP进行模式匹配的每一趟匹配过程
10.设字符串S='aabaabaabaac'
P='aabaac'
(1)计算S和P的next数组
(2)若S作主串,P作模式串,试给出利用BF算法和KMP算法的匹配过程
11.已知模式串T='abcaabbabcab',写出用KMP算法对应的next和nextval函数值
【解析】
模式串T的next和nextval值如下:

解析:next[j]=匹配字符个数(前缀与后缀进行匹配)+1;nextval[j]第一个必须是0

j123456789101112
模式串abcaabbabcab
next[j]011122312345
nextval[j]011021301105


12.设一有向图G=(V,E),其中V={a,b,c,d,e},E={<a,b>,<a,d>,<b,a>,<c,b>,<c,d>,<d,e>,<e,a>,<e,b>,<e,c>}
①请画出该有向图,并求各顶点的入度和出度
②画出邻接矩阵
③分别画出有向图的正邻接表和逆邻接表

13.对于图1所示的带权无向图:
①写出该带权无向图的邻接矩阵表示
按照Prim算法给出从顶点2开始构造最小生成树的过程
按照Kruskal算法给出最小生成树的过程

14.已知带权有向图如图2所示,请利用Dijkstra算法从顶点V_{4}出发到其余顶点的最短路径及长度,并画表给出相应的求解步骤

15.拓扑排序的结果不是唯一的,请给出如图3所示的有向无环图的五种可能的拓扑序列

16.假设一个工程的进度计划用AOE网表示,如图4所示

请求出ve(i)、vl(i)、e(i)、l(i),给出全部的关键路径


  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题,数据元素的① 、数据信息在计算机的② 以及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其D是① 的有限集合,R是D上的② 有限集合。 ① A.算法 B.数据元素 C.数据操作 D.数据对象 ② A.操作 B.映象 C.存储 D.关系 3. 在数据结构,从逻辑上可以把数据结构分成 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 4. 算法分析的目的是① ,算法分析的两个主要方面是② 。 ① A. 找出数据结构的合理性 B. 研究算法的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 空间复杂性和间复杂性 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 5. 计算机算法指的是① ,它必具备输入、输出和② 等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 1.2 填空题(将正确的答案填在相应的空) 1. 数据逻辑结构包括 、 、 和 四种类型,形结构和图形结构合称为 。 2. 在线性结构,第一个结点 前驱结点,其余每个结点有且只有 个前驱结点;最后一个结点 后续结点,其余每个结点有且只有 个后续结点。 3. 在形结构结点没有 结点,其余每个结点有且只有 个直接前驱结点,叶子结点没有 结点,其余每个结点的直接后续结点可以 。 4. 在图形结构,每个结点的前驱结点数和后续结点数可以 。 5. 线性结构元素之间存在 关系,形结构元素之间存在 关系,图形结构元素之间存在 关系。 6. 算法的五个重要特性是__ __ , __ __ , ___ _ , __ __ , _ ___。 7. 分析下面算法(程序段),给出最大语句频度 ,该算法的间复杂度是__ __。 for (i=0;i<n;i++) for (j=0;j<n; j++) A[i][j]=0; 8. 分析下面算法(程序段),给出最大语句频度 ,该算法的间复杂度是__ __。 for (i=0;i<n;i++) for (j=0; j<i; j++) A[i][j]=0; 9. 分析下面算法(程序段),给出最大语句频度 ,该算法的间复杂度是__ __。 s=0; for (i=0;i<n;i++) for (j=0;j<n;j++) for (k=0;k<n;k++) s=s+B[i][j][k]; sum=s; 10. 分析下面算法(程序段)给出最大语句频度 ,该算法的间复杂度是__ __。 int i=0,s=0; while (s<n) { i++; s+=i; //s=s+i } 11. 分析下面算法(程序段)给出最大语句频度 ,该算法的间复杂度是__ __。 i=1; while (i<=n) i=i*2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值