数据结构的相关练习(3)附加答案

1.算术表达式(a+a*b)*a+c*b/a的后缀表达式是______。   

         A、a a b * + a * c b * a / +  

         B、a a * b + a * c b * a / + 

        C、a a b * a * c b * + a / +      

        D、a a b * + a c b * a / + *

答案:['a a b * + a * c b * a / +']

2.将算术表达式“1+6/(8-5)*3”转换成后缀表达式,在求后缀表达式的过程中,当遇到'*'时,运算数栈(从栈顶到栈底次序)为______。          

        A、8 6 1 

        B、5 8 1

        C、3 2 1

        D、3 6 1

答案:['3 2 1']

3.当用一个数组data[0..n-1]存放栈中元素时,栈底最好______。          

        A、设置在data[0]处   

        B、设置在data[n-1]处

        C、设置在data[0]或data[n-1]处  

        D、设置在data数组的任何位置

答案:['设置在data[0]或data[n-1]处']

4.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为n,则以下元素x进栈最适合的操作是______。           

        A、top++; data[top]=x;     

        B、data[top]=x; top++;    

        C、top--; data[top]=x;

        D、data[top]=x; top--;

答案:['data[top]=x; top--;']

5.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为n,则以下出栈元素x最适合的操作是______。        

        A、x=data[top]; top++;     

        B、top++; x=data[top];    

        C、x=data[top]=x; top--;  

        D、top--; x=data[top];

答案:['top++; x=data[top];']

 6.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进栈最适合的操作是______。           

        A、top++; data[top]=x;     

        B、data[top]=x; top++;    

        C、top--; data[top]=x;

        D、data[top]=x; top--;

答案:['top++; data[top]=x;']

7.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为0,则以下出栈元素x最适合的操作是______。           

        A、x=data[top]; top--;

        B、x=data[top]; top++;    

        C、top--; x=data[top];

        D、top++; x=data[top];;

答案:['x=data[top]; top--;']

8.有关链栈的叙述中正确的是______。        

        A、链栈在进栈操作时一般不需要考虑上溢出   

        B、链栈在出栈操作时一般不需要考虑下溢出 

        C、链栈和顺序栈相比的缺点是不能随机访问栈中元素   

        D、以上都不对

答案:['链栈在进栈操作时一般不需要考虑上溢出']

 9.以下各链表均不带有头结点,其中最不适合用作链栈的链表是______。             

        A、只有表头指针没有表尾指针的循环双链表

        B、只有表尾指针没有表头指针的循环双链表   

        C、只有表尾指针没有表头指针的循环单链表      

        D、只有表头指针没有表尾指针的循环单链表

答案:['只有表头指针没有表尾指针的循环单链表']

10.栈和队列的共同点是______。            

        A、都是先进后出

        B、都是后进先出   

        C、只允许在端点处插入和删除元素

        D、没有共同点

答案:['只允许在端点处插入和删除元素']

11.栈和队列的不同点是______。            

        A、都是线性表    

        B、都不是线性表   

        C、栈只能在同一端进行插入删除操作,而队列在不同端进行插入删除操作      

        D、没有不同点

答案:['栈只能在同一端进行插入删除操作,而队列在不同端进行插入删除操作']

12.循环队列______。        

        A、不会产生下溢出    

        B、不会产生上溢出      

        C、不会产生假溢出    

        D、以上都不对

答案:['不会产生假溢出']

13.某循环队列的元素类型为char,队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素,如下图所示,则队中从队头到队尾的元素为______。

        A、abcd123456   

        B、abcd123456c 

        C、dfgbca    

        D、cdfgbca

 答案:['dfgbca']

14.若某循环队列有队首指针front和队尾指针rear,在队不空时出队操作仅会改变______。        

        A、front

        B、rear  

        C、front和rear   

        D、以上都不队

答案:['front']

15.若某循环队列有队头指针front和队尾指针rear,在队不满时进队操作仅会改变______。        

        A、front

        B、rear  

        C、front和rear   

        D、以上都不对

答案:['rear']

16.已知循环队列存储在一维数组A[0..n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是______。            

        A、0,0

        B、0,n-1    

        C、n-1,0   

        D、n-1,n-1

答案:['0,n-1']

18.设循环队列qu中数组data的下标是0~N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),元素x出队的操作是______ ; x=qu.data[qu.f]。      

        A、qu.r++    

        B、qu.r=(qu.r+1)%N      

        C、qu.f++;   

        D、qu.f=(qu.f+1)%N

答案:['qu.f=(qu.f+1)%N']

19.设固定容量的循环队列中数组的下标是0~N-1,其队头队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为______。           

        A、r-f   

        B、r-f-1

        C、(r-f)%N+1     

        D、(r-f+N)%N

答案:['(r-f+N)%N']

20.设固定容量的循环队列的存储空间为a[0..20],且当前队头指针和队尾指针的值分别为8和3,则该队列中元素个数为______。        

        A、5      

        B、6      

        C、16    

        D、17

答案:['16']

21.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再进队两个元素后,rear和front的值分别为______。

        A、1和5      

        B、2和4      

        C、4和2      

        D、5和1

答案:['2和4']

22.假设用一个不带头结点的单链表表示队列,队尾在链表的______ 位置。             

        A、链头

        B、链尾 

        C、链中

        D、以上都可以

答案:['链尾']

23.最不适合用做链队的链表是______。            

        A、只带头结点指针的非循环双链表   

        B、只带队首结点指针的循环双链表 

        C、只带队尾结点指针的循环双链表   

        D、以上都不适合

答案:['只带头结点指针的非循环双链表']

24.串是一种特殊的线性表,其特殊性体现在______。            

        A、可以顺序存储   

        B、数据元素是单个字符    

        C、可以链式存储

        D、数据元素可以是多个字符

答案:['数据元素是单个字符']

25.以下______ 是“abcd321ABCD”串的子串。             

        A、abcd      

        B、321AB     

        C、“abcABC”   

        D、“21AB”;

答案:["21AB&quot"]

26.对于一个链串s,查找第一个值为x元素的算法的时间复杂度为______。             

        A、O(1) 

        B、O(n) 

        C、O(n2)      

        D、以上都不对

答案:['O(n)']

27.对于一个链串s,查找第i个元素的算法的时间复杂度为______。          

        A、O(1) 

        B、O(n) 

        C、O(n2)      

        D、以上都不对

答案:['O(n)']

28.设有两个串s和t,求t在s中首次出现的位置的运算称作______。       

        A、连接

        B、模式匹配 

        C、求子串    

        D、求串长

答案:['模式匹配']

29.已知t="abcaabbcabcaabdab",该模式串的next数组值为______。           

        A、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1      

        B、0,1,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1      

        C、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,7,1 

        D、-1,0,0,0,1,1,2,3,0,1,2,3,4,5,6,0,1

答案:['-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1']

30.已知t="abcaabbcabcaabdab",该模式串的nextval数组为______。           

        A、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1      

        B、-1,0,0,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0    

        C、-1,-1,-1,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0      

        D、-1,0,0,-1,1,0,-1,0,-1,0,0,-1,1,0,-1,-1,0

答案:['-1,0,0,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0']

31.设目标串为s,模式串为是t,在KMP算法中,next[4]=2的含义是______。        

        A、表示目标串匹配失败的位置是i=4     

        B、表示模式串匹配失败的位置是j=2

        C、表示t4字符前面最多有2个字符和开头的2个字符相同      

        D、表示s4字符前面最多有2个字符和开头的2个字符相同

答案:['表示t4字符前面最多有2个字符和开头的2个字符相同']

32.在KMP算法中,next[j]=-1的含义是______。           

        A、表示j=-1      

        B、表示下一趟从j=0位置开始比较 

        C、表示两字符比较相等    

        D、表示两串匹配成功

答案:['表示下一趟从j=0位置开始比较']

33.在BF算法中,当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是______。               

        A、i++  

        B、i=j+1

        C、i=i-j+1    

        D、i=j-i+1

答案:['i=i-j+1']

34.在BF算法中,当模式串位j与目标串位i比较时,两字符不相等,则j的位移方式是______。               

        A、j++  

        B、j=0   

        C、j=i-j+1    

        D、j=j-i+1

答案:['j=0']

35.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是______。         

        A、i=next[j]  

        B、i不变      

        C、j不变      

        D、j=next[j]

答案:['i不变']

36.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符不相等,则j的位移方式是______。         

        A、i=next[j]  

        B、i不变      

        C、j不变      

        D、j=next[j]

答案:['j=next[j]']

37.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符相等时,则i的位移方式是______。         

        A、i++  

        B、i=j+1      

        C、i=i-j+1    

        D、i=j-i+1

答案:['i++']

38.在KMP算法中,已经求出next数组。当模式串位j与目标串i比较时,两字符相等时,则j的位移方式是______。            

        A、j++  

        B、j不变      

        C、j=i-j+1    

        D、j=0

答案:['j++']

39.递归模型如下:

f(1)=1

f(n)=f(n-1)+n      n>1        

其中递归出口是______。           

        A、f(1)=0     

        B、f(1)=1      

        C、f(0)=1      

        D、f(n)=n

答案:['f(1)=1']

40.函数f(x,y)定义如下:

f(n)=f(n-1)+f(n-2)+1                 n>1

f(n)=1             n<=1

则f(5)的值是______。         

        A、10    

        B、15    

        C、16    

        D、20

答案:['15']

41.将递归算法转换成非递归算法时,通常要借助的数据结构是______。             

        A、线性表    

        B、栈    

        C、队列

        D、树

答案:['栈']

42.函数f(x,y)定义如下:

f(x,y)=f(x-1,y)+f(x,y-1)               当x>0且y>0

f(x,y)=x+y                                       否则

则f(2,1)的值是______。           

         A、1       B、2       C、3       D、4

答案:['4']

43.某递归算法的执行时间的递推关系如下:

T(n)=1                  当n=1时

T(n)=2T(n/2)+1         当n>1时

则该算法的时间复杂度为______。           

        A、O(1) 

        B、O(log2n) 

        C、O(n)      

        D、O(nlog2n)

答案:['O(n)']

  • 2
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值