数据结构机考题库汇总

数据结构机考题库汇总

1、在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是( A  )。

选项A)访问第i个元素的前驱(1<i<=n)

选项B)在第i个元素之后插入一个新元素(1<=i<=n)

选项C)删除第i个元素(1<=i<=n)

选项D)对顺序表中元素进行排序

顺序表是随机存取结构,选项A中实质是查找第i个结点和第i一1个结点,因此时间复杂度为O(1);选项B和C插入和删除都需要移动元素,时间复杂度为O(n);选项D是排序问题,时间复杂度是O(n)~O(n2)。

2、不带头结点的单链表head为空的判定条件是(  A  )。

选项A)head==NULL

选项B)head->next==NULL

选项C)head->next==head

扫描二维码关注公众号,回复: 2254339 查看本文章

选项D)head!=NULL

在不带头结点的单链表head中,head指向第一个元素结点,head=NULL表示该链表为空。

3、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动(  B  )个元素。

选项A) n-i

选项B) n-i+1 

选项C) n-i-1

选项D) i

i之前共有(i-1)个元素,所以,需移动(n-(i-1))个元素

4、某程序的时间复杂度为(3n+nlog2n+n2+8),其数量级表示为( C )。

选项A)O(n)

选项B)O(nlog2n)

选项C)O(n2)

选项D)O(log2n)

5、在以下的叙述中,正确的是(  C  )。

选项A)线性表的顺序存储结构优于链表存储结构

选项B)线性表的顺序存储结构适用于频繁插入/删除数据元素的情况

选项C)线性表的链表存储结构适用于频繁插入/删除数据元素的情况

选项D)线性表的链表存储结构优于顺序存储结构

6、对一个具有n个元素的线性表,建立其单链表的时间复杂性为(  A  )。

选项A)O(n)

选项B)O(1)

选项C)O(n2)

选项D)O(log2n)

7、线性表链式存储结构的特点,哪个是错误的(  C  )。

选项A)逻辑上相邻的元素,其物理位置不一定相邻,元素之间的邻接关系由指针域指示

选项B)链表是非随机存取存储结构,对链表的存取必须从头指针开始

选项C)链表是一种动态存储结构,链表的结点可用free()申请和用malloc()释放。

选项D)插入删除运算非常方便;只需修改相应指针值。

8、当一个顺序表删除一个元素时。被删除元素之后的所有元素均需(  A  )一个位置。

选项A)前移

选项B)后移

选项C)跳跃

选项D)原地不动,不移动

9、在线性表的下列存储结构中,读取元素花费的时间最少的是(  D  )。

选项A)单链表

选项B)双链表

选项C)循环链表

选项D)顺序表

10、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为(  A  )。

选项A) (n-1)/2

选项B) n/2

选项C) (n+1)/2

选项D) n

11、在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )

选项A)p->next=HL->next; HL->next=p

选项B)p->next=HL; HL=p

选项C)p->next=HL; p=HL

选项D)HL=p; p->next=HL

HL为链表的头指针。HL指示链表中第一个节点的存储位置,在表头插入一个由指针p指向的节点后,头指针指向p,p的指针域指向原链表中第一个节点

12、在一个长度为n的顺序表中删除第i个元素,需要向前移动( A  )个元素。

选项A) n-i

选项B)n-i+1

选项C)n-i-1

选项D)i

13、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为(  D  )。

选项A)O(1)

选项B)O(n2)

选项C)O(log2n)

选项D) O(n)

14、下面程序的时间复杂为(  B  )。

for(i=1,s=0; i<=n; i++)

{ t=1

for(j=1;j<=i;j++)

 t=t*j;s=s+t

}

选项A)O(n)

选项B)O(n2)

选项C)O(n3)

选项D)O(n4)

15、下面哪个是顺序存储的特点(  A  )。

选项A)必须按最大可能长度预分存储空间,存储空间利用率低,表的容量难以扩充,是一种静态存储结构

选项B)不能随机存取表中任一元素

选项C)插入删除时,不需要需移动大量元素

选项D)逻辑上相邻的元素,其物理位置不一定相邻

16、算法分析的目的是(  D  )

选项A)找出数据结构的合理性

选项B)分析算法的易懂性和文档性

选项C)研究算法中的输入和输出的关系

选项D)分析算法的效率以求改进

17、带头结点的单链表head为空的条件是(  C  )。

选项A)head==head->next

选项B)head!=NULL

选项C)head->next==NULL

选项D)head->next!=NULL

18、对于一个具有n个结点的单链表,在已知的结点*p 后插入一个新结点的时间复杂性为(  B  )。

选项A)O(n)

选项B)O(1)

选项C)O(n2)

选项D)O(log2n)

19、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度(  C  )。

选项A)O(log2n)

选项B)O(1)

选项C)O(n)

选项D)O(n2)

20、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为(  D  )。

选项A)O(1)

选项B)O(n2)

选项C)O(log2n)

选项D) O(n)

21、当一个顺序表插入一个元素时。从插入位置开始向后的所有元素均需移动一个位置。移动过程是从(  B  )依次移动。

选项A)前向后

选项B)后向前

选项C)跳跃

选项D)原地不动,不移动

22、设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(  A  )。

选项A)q=p->next;p->data=q->data;p->next=q->next;free(q);

选项B)q=p->next;q->data=p->data;p->next=q->next;free(q);

选项C)q=p->next;p->next=q->next;free(q);

选项D)q=p->next;p->data=q->data;free(q);

23、算法分析的两个主要方面是(  A  )。

选项A)空间复杂度和时间复杂度

选项B)正确性和简单性

选项C)可读性和文档性

选项D)数据复杂性和程序复杂性

24、线性结构是数据元素之间存在一种(  D  )。

选项A)一对多关系

选项B)多对多关系

选项C)多对一关系

选项D)一对一关系

25、非线性结构是数据元素之间存在一种(  B  )。

选项A)一对多关系

选项B)多对多关系

选项C)多对一关系

选项D)一对一关系

26、在一个顺序表的表尾插入一个元素的时间复杂性的量级为(  B  )。

选项A)O(n)

选项B)O(1)

选项C)O(n2)

选项D)O(log2n)

27、对一个算法的评价,不包括如下(  B  )方面的内容。

选项A)健壮性

选项B)并行性

选项C)时间复杂度

选项D)空间复杂度

28、将长度为m链表连接在长度为n单链表之后的算法的时间复杂度为(  C  )。

选项A)O(1)

选项B)O(m)

选项C)O(n)

选项D)O(m+n)

首先遍历长度为n的单链表,找到链尾结点

29、下图对应的是链式存储结构中的(  A  )操作。

 

选项A)双链表结点添加操作

选项B)双链表结点删除操作

选项C)破坏链式结构的一对一的关系

选项D)建立链表的一对多关系

30、顺序表中,插入一个元素所需移动的元素平均数是(    )。

选项A) 3n/2

选项B) n

选项C) n+1

选项D)(n+1)/2

31、分析下列程序段的时间复杂度(  B  )。

x=0;

for(i=1; i<n; i++)

  for (j=1; j<=n-i; j++)

x++;

选项A)O(n)

选项B)O(n2)

选项C)O(m*n)

选项D)O(1)

32、线性表、栈和队列都是(  A  )结构,可以在线性表的任何位置插入和删除元素,对于队列和栈却只能在指定位置进行元素的添加和删除。

选项A)线性

选项B)数组

选项C)逻辑

选项D)物理

33、顺序表的长度是指(  B  )。

选项A)数组元素的个数

选项B)是表中数据元素的个数

选项C)数组元素的个数减1

选项D)是表中数据元素的个数减1

34、下列程序段的时间复杂度为(  A  )。

i=0,s=0

while (s<n)

{

s=s+i;i++

}

选项A)O(n1/2)

选项B)O(n1/3)

选项C)O(n)

选项D)O(n2)

设第x 次循环后退出循环,此时i = x, s= x(x+1)/2

代入得到x(x+1)>=2n,解方程得到x=(-1+根号(1+8n))/2上取整

因此时间复杂度为O(根号n)

35、线性表、栈和队列都是线性结构,可以在线性表的任何位置插入和删除元素,对于队列(  D  )。

选项A)只能在队头插入和删除元素

选项B)只能在队尾插入和删除元素

选项C)可在任何位置

选项D)只能在队头删除元素

36、如下图的链式存储结构称为(  C  )。

 

选项A)单链表

选项B)双链表

选项C)带头结点的双循环链表

选项D)带头结点的单循环链表

37、以下数据结构中哪一个是非线性结构?(  D  )

选项A)队列

选项B)栈

选项C)线性表

选项D)二叉树

38、按(25,45,18)的顺序输入,下图对应的是链式存储结构中的(  A  )操作。

 

选项A)单链表的头插法建立链表

选项B)单链表的尾插法建立链表

选项C)构建循环链表的尾插法操作

选项D)构建循环链表的前插法操作

39、下面哪个不是顺序存储的特点(  D  )。

选项A)逻辑上相邻的元素,其物理位置也相邻

选项B)可随机存取表中任一元素

选项C)插入删除时,需移动大量元素,平均移动元素为n/2

选项D)逻辑上相邻的元素,其物理位置不一定相邻

40、数据结构的四种基本类型中(  B  )的元素是一对多关系。

选项A)线性结构

选项B)树形结构

选项C)图形结构

选项D)散列结构

41、设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需要修改指针的操作为(  A  )

选项A)p->next=p->next->next

选项B)p=p->next

选项C)p=p->next->next

选项D)P->next=P

42、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行( C )。

选项A)s->next=p->next; p->next=s

选项B)p->next=s->next;s->next=p

选项C)q->next=s;s->next=p

选项D)p->next=s;s->next=q

43、数组的逻辑结构不同于下列(  B  )的逻辑结构。

选项A)线性表

选项B)图

选项C)队列

选项D)栈

44、若要在一个不带表头结点的单链表的首结点*p结点之前插入一个*s结点时。可执行下列操作;(1)s->next=______;(2)p->next=s;(3)t=p->data;(4)p->data=______(5)s->data=__B____

选项A)s->data         p->next      t

选项B)p->next        s->data      t

选项C)p->next->next   s->data      t

选项D)p->next->next   s           t

45、以下哪个不是线性表(  D  )

选项A)学生成绩单

选项B)英文字母(A,B,……Z)

选项C)扑克牌点数(2,3,4,……,10,J,Q,K,A)

选项D)学院组织结构表

46、从表中任一结点出发,都能扫描整个表的是( C  )。

选项A)单链表

选项B)顺序表

选项C)循环链表  

选项D)静态链表

47、数组的逻辑结构和存储结构分别是(  B  )。

选项A)顺序结构 、线性结构

选项B)线性结构 、顺序结构

选项C)线性结构 、链式结构

选项D)顺序结构 、链式结构

48、对于一个具有n个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂性为(  A  )。

选项A)O(n)

选项B)O(1)

选项C)O(n2)

选项D)O(log2n)

49、设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(C)。

选项A)6

选项B)4

选项C)3

选项D)2

50、栈的插入和删除只能在栈的顶端进行,后进栈的元素必定先被删除,所以又把栈称作(  A  )表。

选项A)先进后出

选项B)先进先出

选项C)后进后出

选项D)顺序

51、无论是顺序存储还是链接存储的栈和队列,进行插入或删除运算的时间复杂性均为(    )

选项A)O(n)

选项B)O(n2)

选项C)O(1)   

选项D)O(1og2n)

52、当利用大小为N的数组顺序存储一个栈时,假定用top==-1表示栈空,则向这个栈插入一个元素时,首先应执行(  A  )语句修改top指针。

选项A)top++

选项B)top--

选项C)top=0

选项D)top=N-1

53、为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两个栈的(  B  )分别设在这片内存空间的两端,这样只有当两个栈的栈顶在栈空间的某一位置相遇时才产生上溢。

选项A)栈顶

选项B)栈底

选项C)一个栈底一个栈顶

选项D)无任何要求

54、顺序栈中当栈中元素为m时,做进栈运算时发生上溢,则说明栈的可用最大容量为(  B  )

选项A)m-1

选项B)m

选项C)m+1

选项D)n

55、顺序栈中在做进栈运算时,应先判别栈是否(  A  )

选项A)满

选项B)空

选项C)上溢

选项D)下溢

56、判定一个顺序栈ST(最多元素为m0)为空的条件是( B )

选项A)ST->top<>0

选项B)ST->top==0

选项C)ST->top<>m0

选项D)ST->top==m0

57、顺序栈中在做出栈运算时,应先判别栈是否为(  B  )

选项A)满

选项B)空

选项C)上溢

选项D)下溢

58、向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行( B )。

选项A) hs->next=s

选项B) s->next=hs;hs=s

选项C) s->next=hs->next;hs->next=s

选项D) s->next=hs;hs=hs->next

59、设用链表作为栈的存储结构则进栈操作(  D   )。

选项A)必须判别栈是否为满

选项B)必须判别栈是否为空

选项C)判别栈元素的类型

选项D)对栈不作任何判别

60、设用链表作为栈的存储结构则退栈操作(  B  )。

选项A)必须判别栈是否为满

选项B)必须判别栈是否为空

选项C)判别栈元素的类型

选项D)对栈不作任何判别

61、假定一个链式栈的栈顶指针用top表示,每个结点的结构具有两个域data和next,出栈时进行的指针操作为(  C )。

选项A)top->next=top

选项B)top=top->data

选项C)top=top->next

选项D)top->next=top->next->next

62、在计算递归函数时,如不使用递归过程,则一般情况下必须借助于(  A  )数据结构

选项A)栈

选项B)树

选项C)双向队列

选项D)顺序表

63、表达式a*(b+c)的后缀表达式是(  B  )。

选项A)abc*+

选项B)abc+*

选项C)ab*c+

选项D)+*abc

64、在递归算法中,每次递归调用前,系统自动把值参数局部变量的当前值以及调用后的返回值(  A  )。

选项A)压入到栈里

选项B)退出栈

选项C)压入到队列里

选项D)出队

65、设计一个二进制向十六进制转换的算法,采用(  A  )数据结构最佳。

选项A)栈

选项B)链表

选项C)队列

选项D)二叉树

66、在每次递归调用结束后,又自动做(  B  )处理,恢复栈和局部量的原值,接着无条件转向由返回地址所决定的位置执行。

选项A)入栈

选项B)出栈

选项C)入队

选项D)出队

67、判定一个顺序栈的S(最多元素时m0)为满的条件是( B  )。

选项A)S->top!=0

选项B)S->top==0

选项C)S->top!=m0-1

选项D)S->top==m0-1

68、在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,则当做出栈处理时,top变化为( C )

选项A)top不变

选项B)top=0

选项C)top--

选项D)top++

69、判定一个顺序栈S(栈空间大小为n)为空的条件是( A )。

选项A)S->top==0  

选项B)S->top!=0

选项C)S->top==n     

选项D)S->top!=n

70、假定一个链式栈的栈顶指针用top表示,每个结点的结构具有两个域data和next,出栈时进行的指针操作为(  C )。

选项A)top->next=top

选项B)top=top->data

选项C)top=top->next

选项D)top->next=top->next->next

71、一个中缀算术表达式为1+(3-x)*y,则其对应的后缀算术表达式为(  C  )

选项A)13+x-y*

选项B)13x+-y*

选项C)13x-y*+

选项D)13xy-+

72、设计一个判别表达式中括号是否配对的算法,采用(  D  )数据结构最佳。

选项A)顺序表

选项B)链表

选项C)队列

选项D)栈

73、设计一个二进制向八进制转换的算法,采用(  D  )数据结构最佳。

选项A)顺序表

选项B)链表

选项C)队列

选项D)栈

74、设计一个二进制向十六进制转换的算法,采用(  D  )数据结构最佳。

选项A)栈

选项B)链表

选项C)队列

选项D)二叉树

75、设有一个栈,栈的长度为3,元素的进栈次序为A,B,C,D,E,下列(    )是不可能的出栈序列。

选项A)A,B,C,D,E

选项B)B,C,D,E,A

选项C)A,D,E,C,B

选项D)E,D,C,B,A

76、为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两个栈的栈底分别设在这片内存空间的两端,这样只有当两个栈的(  A  )。

选项A)栈顶在栈空间的某一位置相遇时才产生上溢

选项B)栈底在栈空间的某一位置相遇时才产生上溢

选项C)一个栈底一个栈顶在栈空间的某一位置相遇时才产生上溢

选项D)无任何要求

77、栈操作的原则是(  B  )。

选项A)后进后出

选项B)后进先出

选项C)任意位置插入

选项D)任意位置删除

78、假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为( C)。

选项A)a[--top]= x

选项B)a[top--]= x

选项C)a[++top]= x

选项D)a[top++]= x

79、循环队列用数组A[m](下标从0到m-1)存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是(  A  )。

选项A)(rear-front+m)%m

选项B)rear-front+1

选项C)rear-front-1

选项D)rear-front

80、如下图的链式存储结构称为(  B  )。

 

选项A)单循环链表

选项B)带头结点的链队

选项C)循环链表

选项D)链栈

81、用链接方式存储的队列,在进行删除运算时(  A  )

选项A)仅修改头指针

选项B)头、尾指针都要修改

选项C)仅修改尾指针

选项D)头、尾指针可能都要修改

82、(  D  )是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

选项A)栈

选项B)线性表

选项C)顺序表

选项D)队列

83、设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为(  B  )。

选项A)front->next=s;front=s

选项B)s->next=rear;rear=s

选项C)rear->next=s;rear=s

选项D)s->next=front;front=s

84、用链接方式存储的队列,在进行插入运算时(  C  ).

选项A)仅修改头指针

选项B)头、尾指针都要修改

选项C)仅修改尾指针

选项D)头、尾指针可能都要修改

85、队列的删除操作是在(  A  )。

选项A)队首

选项B)队尾

选项C)队前   

选项D)队后

86、如下图的存储结构称为(  A  )。

 

选项A)顺序队的循环队

选项B)带头结点的链队

选项C)单循环链表

选项D)链栈

87、在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,打印机则从该缓冲区中取出数据打印。该缓冲区应该是一个(  B  )结构。

选项A)堆栈

选项B)队列

选项C)数组

选项D)线性表

88、假定一个列队的队首和队尾指针分别用front和rear表示,每个结点的结构具备两个域:data和next,当出队时所进行的指针为(  A  )。

选项A)front=front->next

选项B)rear=rear->next

选项C)front->next=rear   rear=rear->next

选项D)front=front->next front->next=rear

89、从一个顺序循环队列中删除元素时,首先需要(  B  )。

选项A)前移队首指针

选项B)后移队首指针

选项C)取出队首指针所指位置上的元素

选项D)取出队尾指针所指位置上的元素

90、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3。当从队列中删除一个元素,再加入两个元素后,rearfront的值分别为(  B  )。                                      队尾   队头

选项A)1和5

选项B)2和4

选项C)4和2

选项D)5和1

91、采用故意少用一个空间的方法来判断一个循环队列Q(空间大小为M)为空的条件是( D  )。

选项A)Q->front==Q->rear

选项B)Q->rear-Q->front-1==M

选项C)Q->front+1=Q->rear

选项D)Q->rear+1=Q->front

92、判定一个队列QU(最多元素为m0)为满队列的条件是( A )。

选项A)QU->rear - QU->front = = m0

选项B)QU->rear -QU->front -1= = m0

选项C)QU->front = = QU->rear

选项D)QU->front = = QU->rear+1

93、设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为( D  )。

选项A)front=front+1

选项B)front=(front+1)%(m-1)

选项C)front=(front-1)%m

选项D)front=(front+1)%m

94、以下说法正确的是(  C  )

选项A)若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的前序遍历序列中的最后一个结点。

选项B)若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序遍历序列中的最后一个结点

选项C)二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点

选项D)在二叉树中,具有一个子女结点,在中序遍历序列中,它没有后继子女结点

95、对某二叉树进行先序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序遍历的结果是(  B  )。由先序确定根结点,结合中序确定左右结点

选项A)DBFEAC

选项B)DFEBCA

选项C)BDFECA

选项D)BDEFAC

96、二叉树是非线性数据结构, (  C  )

选项A)它不能用顺序存储结构存储;

选项B)它不能用链式存储结构存储;

选项C)顺序存储结构和链式存储结构都能存储;

选项D)顺序存储结构和链式存储结构都不能使用

97、设某棵二叉树中有2000个结点,则该二叉树的最小高度为(  C  )。

选项A)9

选项B)10

选项C)11      [log2(2000)]+1=11

选项D)12

98、对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为(  B  ),其中n-1个用于链接孩子结点。

选项A)n

选项B)2n

选项C)n+1

选项D)2n+1

99、如图所示的二叉树的先序遍历得到的结点序列为(  C  )。

 

选项A)ABCDEFGHIJ

选项B)ACBEDHJIGF

选项C)FDBACEGIHJ

选项D)FBDACGEIHJ

100、若以{4,5,6,7,8}作为权值构造哈夫曼树,则该树的带权路径长度为(  C  )。

选项A)67

选项B)68

选项C)69

选项D)70

101、对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为2n,其中( C )个空闲着。

选项A)n

选项B)2n

选项C)n+1

选项D)n-1

102、表达式a*(b+c)-d的后缀表达式是(  B  )。

选项A)abcd+-

选项B)abc+*d-

选项C)abc*+d-

选项D)-+*abcd

103、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( B)。

选项A)24

选项B)71

选项C)48

选项D)53

104、如下图所示二叉树的中序遍历序列是(  B  )。

 

选项A)abcdgef

选项B)dfebagc

选项C)dbaefcg

选项D)defbagc

105、在一棵具有5层的满二叉树中结点总数为(  A  )。

选项A)31

选项B)32

选项C)33

选项D)16

106、某二叉树的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为(   C  )。

选项A)2

选项B)3

选项C)4

选项D)5

107、对于一个具有n个结点的二叉树,当它为单分支二叉树时具有最大高度,其高度为(  A  )。

选项A)n

选项B)log2n

选项C)2i-1

选项D)2i-1

108、深度为k的完全二叉树中最少有(  B  )个结点。

选项A)2k-1-1

选项B)2k-1

选项C)2k-1+1

选项D)2k-1

109、设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(  A  )。

选项A)BADC

选项B)BCDA

选项C)CDAB

选项D)CBDA

110、把一棵树转换为二叉树后,这棵二叉树的形态是(  A  )

选项A)唯一的

选项B)有多种

选项C)有多种,但根结点都没有左孩子

选项D)有多种,但根结点都没有右孩子

111、如下图所示,该二叉树中度为2的结点的个数为(  B  )。

 

选项A)2

选项B)4

选项C)5

选项D)7

112、下图所示为树型结构的何种存储方法(  C 

 

选项A)顺序存储表示法

选项B)孩子链表示法

选项C)孩子兄弟表示法

选项D)双亲表示法

113、设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为(  B  )。

选项A)2h

选项B)2h-1

选项C)2h+1

选项D)h+1

114、设某棵三叉树中有40个结点,则该三叉树的最小高度为(  B  )。

选项A)3

选项B)4

选项C)5

选项D)6

115、二叉树中第i(i≥1)层上的结点数最多有(  C  )个。

选项A)2i

选项B)2i

选项C)2i-1

选项D)2i-1

116、根据二叉树的定义可知二叉树共有(  B  )种不同的形态。

选项A)4

选项B)5

选项C)6

选项D)7

117、利用3,6,8,12这四个值作为叶子结点的权,生成一棵赫夫曼树,该树的带权路径长度为(  A  )。

选项A)55

选项B)29

选项C)58

选项D)38

118、如下图所示,(  A  )是完全二叉树。

选项A

选项B

选项C

选项D

119、一份电文中有6种字符:A,B,C,D,E,F,它们的出现频率依次为16,5,9,3,30,1 构造一棵哈夫曼树,其权值为(  C  )。

选项A)98

选项B)114

选项C)129

选项D)132

120、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是(  B  )

选项A)a在b右方

选项B)a在b左方

选项C)a是b的祖先

选项D)a是b的子孙

121、深度为6的二叉树最多有(  B  )个结点

选项A)64

选项B)63

选项C)32

选项D)31

122、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R[1..N]中,若结点R[i]有右孩子,则其右孩子是(  B  )。

选项A)R[2i-1]

选项B)R[2i+1]

选项C)R[2i]

选项D)R[2/i]

123、以下说法错误的是(  D  )  

选项A)一般在哈夫曼树中,权值越大的叶子离根结点越近

选项B)哈夫曼树中没有度数为1的分支结点

选项C)若初始森林中共有n裸二叉树,最终求得的哈夫曼树共有2n-1个结点

选项D)若初始森林中共有n裸二叉树,进行2n-1次合并后才能剩下一棵最终的哈夫曼树

124、设非空二叉树上叶子节点数为n0,双分支数为n2,单分支数为n1,以下关系式正确的是(  C  )。

选项A)n0= n1+1

选项B)n0= n1-1

选项C)n0= n2+1

选项D)n0= n2-1

总节点数n=n0+n1+n2,

总的链接数为n-1=n1+2n2

所以n0 =n2+1

125、设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为(  B  )。

选项A)2i+1

选项B)2i

选项C)i/2

选项D)2i-1

126、一棵二叉树有n个结点,要按某顺序对该二叉树中的结点编号,(号码为1-n),编号须具有如下性质:二叉树中任一结点V,其编号等于其左子树中结点的最大编号加1。而其右子树中结点的最小编号等于V的编号加1。试问应按( B )遍历顺序编号。

选项A)前序

选项B)中序

选项C)后序

选项D)层次

127、某二叉树的先序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(  )。

选项A)bdgcefha

选项B)gdbecfha

选项C)bdgaechf

选项D)gdbehfca

128、已知某二叉树的后序遍历序列是dabec,中序遍历序列是deabc,它的前序遍历序列是(  D  )。

选项A)acbed

选项B)deabc

选项C)decab

选项D)cedba

129、设二叉树有n个结点,则其深度为(  D  )

选项A)n-1

选项B)n

选项C)n(log2n)

选项D)无法确定

130、欲实现任意二叉树的后序遍历的非递归算法二不必使用栈结构,最佳方案是二叉树采用(  A  )存储结构。

选项A)三叉链表

选项B)广义表存储结构

选项C)二叉链表

选项D)顺序存储结构

131、深度为5的二叉树最少有(  A  )个结点。

选项A)5

选项B)10

选项C)31

选项D)32

132、设某棵完全二叉树中有100个结点,则该二叉树中有(  C  )个叶子结点。

选项A)48

选项B)49

选项C)50

选项D)51

设二叉树中度为0、1、2的结点个数分别为n0,n1,n2

因此n0 + n1 + n2= 100按照二叉树的性质n0 = n2 + 1,代入得

2n2 + 1 + n1 =100

因为完全二叉树中度为1的结点个数最多1个

为满足上式,也只有n1 =1因此n2 = 49

所以叶子结点个数n0 =50

133、一棵二叉树满足下列条件:对任意结点,若存在左、右子树,则其值都小于它的左子树上所有结点的值,而大于右子树上所有结点的值。现采用(  B  )遍历方式就可以得到这棵二叉树所有结点的递增序列。

选项A)先根

选项B)中根

选项C)后根

选项D)层次

134、任何一棵二叉树的叶结点在其先根、中根、后跟遍历序列中的相对位置 (  C  )

选项A)肯定发生变化

选项B)有时发生变化

选项C)肯定不发生变化

选项D)无法确定

135、树应用及其广泛,二叉树是树中的一个重要类型。其中二叉树的一种应用方式:二叉判定树。其主要应用在(  C  )。

选项A)构建树型结构

选项B)树型结构的优化

选项C)描述分类过程和处理判定优化等方面上

选项D)程序辅助

136、试用权集合{12,4,5,6,1,2}构造哈夫曼树如下图所示,并计算哈夫曼树的带权路径长度为(  C  )。

 

选项A)30

选项B)40

选项C)69

选项D)72

137、二叉树的第k层的结点数最多为(  D  )

选项A)2k-1

选项B)2K+1

选项C)2K-1

选项D)2k-1

138、如果要求一个线性表既能较快的查找,又能适应动态变化的要求,可以采用(  A  )查找方法。

选项A)分块  

选项B)顺序

选项C)折半

选项D)散列

139、对于长度为n的线性表,若进行顺序查找,则时间复杂度为(  A  )。

选项A)O(n)

选项B)O(n2)

选项C)O(n1/2)    

选项D)O(1og2n)

140、若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为(  D  )。

选项A)n

选项B)n+1

选项C)(n-1)/2

选项D)(n+1)/2

141、设在长度为1000的有序表中进行二分查找,则比较二次查找成功的结点数有(  B  )个。

选项A)1

选项B)2

选项C)4

选项D)10

142、采用折半查找方法查找长度为n的线性表时,每个元素的平均查找长度为(    )。

选项A)O(n2)

选项B)O(nlog2n)

选项C)O(n)

选项D)O(log2n)

143、在分块查找方法中,查找的顺序是(   

选项A)首先查找块,然后再查找相应的索引

选项B)首先查找索引,然后再查找相应的块

选项C)先排序,再查找索引

选项D)先排序,再查找块

144、采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分(  B  )个结点为最佳。

选项A)10

选项B)25

选项C)6

选项D)625

145、假定对线性表R[0..59]进行分块检索。共分10块,每块长度等于6。若假定检索索引表和块均用顺序检索的方法,则检索每个元素的平均检索长度为(  C  )

选项A)7

选项B)8

选项C)9

选项D)10

146、按(     )方法遍历二叉排序树可以得到一个从小到大的有序序列。

选项A)先序遍历

选项B)中序遍历

选项C)后序遍历

选项D)层次遍历

147、设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为(    )。

选项A)O(n)

选项B)O(n2)

选项C)O(nlog2n)

选项D)O(1og2n)

148、设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度是(  C  )。

选项A)3.5

选项B)4

选项C)19/7

选项D)20/7

149、对一棵二叉排序树进行中序遍历时,得到的结点序列是一个(  B  )。

选项A)降序序列

选项B)升序序列

选项C)偶数序列

选项D)奇数序列

150、下列二叉树中,不平衡的二叉树是(  C  )。

选项A

选项B

选项C

选项D

151、在一棵平衡二叉排序树中,每个结点点的平衡因子的取值范围是(  A  )。

选项A)-1~1

选项B)-2~2

选项C)1~2

选项D)0~1

152、在散列储存中装填因子a的值越大,存取元素时发生冲突的的可能性就(  A  )

选项A)越大

选项B)越小

选项C)跟装填因子没有关系

选项D)无法控制

153、设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到HASH表中需要做( D )次线性探测。

选项A)n2

选项B)n(n+1)

选项C)n(n+1)/2

选项D)n(n-1)/2

154、解决哈希冲突的主要方法有(  D  )。

选项A)数字分析法、除余法、平方取中法

选项B)数字分析法、除余法、线性探测法

选项C)数字分析法、线性探测法、再哈希法

选项D)线性探测法、再哈希法、链地址法

155、对线性表(18,25,63,50,42,32,90)进行散列存储时,若选用H=key%9作为哈希函数,散列地址为5的元素有 (  2  )个。

选项A)2

选项B)3

选项C)6

选项D)7

156、下述几种排序方法中,要求内存量最大的是(  D  )。

选项A)插入排序

选项B)快速排序 

选项C)选择排序

选项D)归并排序

157、在各种查找方法中,平均查找承担与结点个数n无关的查找方法是(  C  )。

选项A)顺序查找

选项B)折半查找

选项C)哈希查找

选项D)分块查找

158、在对查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插到集合中,这种方式主要适合于(  B  )。

选项A)静态查找表

选项B)动态查找表

选项C)静态查找表和动态查找表

选项D)两种表都不适合

159、顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为(  A  )。

选项A)O(n)

选项B)O(n2)

选项C)O(n1/2)    

选项D)O(1og2n)

160、假定检索有序表R[0..11]中每个元素的概率相等。则进行二分法查找时的平均检索长度为 (  C  )

选项A)6

选项B)7

选项C)37/12

选项D)33/12

161、设二叉排序树的高度为h,总结点数为n,则在该树中查找关键字key最多需要比较(  C )次。

选项A)n2

选项B)log2n

选项C)n

选项D)nlog2n

162、设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度是(    )。

选项A)3.5

选项B)4

选项C)19/7

选项D)20/7

163、在一棵高度为k的理想平衡二叉树中,最少含有(  D )个结点。

选项A)2k-1

选项B)2k+1

选项C)2k-1

选项D)2k-1-1

164、散列法存储的基本思想是由(  D  )决定数据的存储地址。

选项A)哈希函数

选项B)关键字的个数

选项C)关键字的冲突量

选项D)关键字的值

165、若根据查找表建立长度为m的散列表,采用线性探测法处理冲突,假定对一个元素第一次计算的散列地址为d,若一直发生冲突,那么第3次计算其散列地址为(  D)。 +-1 +-2 +-3……

选项A)(d+1)%m

选项B)d+1

选项C)(d+1)/m

选项D)(d-1)%m

166、顺序查找法的平均查找长度为(  A  )。  

选项A)(n+1)/2

选项B)((n+1)*log2(n+1))/n-1

选项C)n2

选项D)log2(n+1)

167、链表适用于(  A  )查找。

选项A)顺序

选项B)二分法

选项C)顺序,也能二分法

选项D)随机

168、设哈希表长m=14,哈希函数H(key)=key MOD 11。表中已有4个结点:addr(15)=4,addr(38)=5,addr(61)=6,addr(84)=7 其余地址为空,如用二次探测再散列处理冲突,则关键字为49的地址为(  C  )。

选项A)3

选项B)5

选项C)8

选项D)9

169、在表长为n的链表中进行线性查找,它的平均查找长度为(  B  )。

选项A)ASL=n

选项B)ASL=(n+1)/2

选项C)ASL= +1

选项D)ASL≈log2(n+1)-1

170、在索引顺序表中查找一个元素,可用的且最快的方法是(  C  )。

选项A)用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找

选项B)用顺序查找法确定元素所在块,再用二分查找法在相应块中查找

选项C)用二分查找法确定元素所在块,再用顺序查找法在相应块中查找

选项D)用二分查找法确定元素所在块,再用二分查找法在相应块中查找

171、长度为255的表,采用分块查找法,每块的最佳长度是(  B  )。

选项A)5

选项B)15

选项C)25

选项D)30

172、对于长度为n的线性表,若采用分块查找(假定总块数和每块长度均接近根号n),则时间复杂度为( C )。

选项A)O(n)

选项B)O(n2)

选项C)O(n1/2)

选项D)O(1og2n)

173、根据n个元素建立一棵二叉排序树的时间复杂性大致为(  D  )。

选项A)n2

选项B)log2n

选项C)n

选项D)nlog2n

174、已知一个待散列储存的线性表为(18,34,58,26,75,67,48,93,81)散列函数为h(k)=k%11,若采用链地址法解决冲突,则平均检索长度为( D )。

选项A)4.5

选项B)5

选项C)16/9

选项D)13/9

175、设一组初始记录关键字序列为(9,8,7,6,5,4,3,2,1,0),则以增量d=5的一趟希尔排序结束后前5条记录关键字为(  A  )。

选项A)4,3,2,1,0

选项B)0,1,2,3,4

选项C)0,3,2,4,1

选项D)4,2,3,1,0

176、对一组初始关键字序列(40,50,95,20,15,70,60,45,10)进行冒泡排序,则第一趟需要进行相邻记录的比较的次数为(  D  )

选项A)9

选项B)4

选项C)5

选项D)6

177、对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为(  D  )

选项A)n+1

选项B)n-1

选项C)n 

选项D)n(n-1)/2

178、若用冒泡排序法对序列(18,14,6,27,8,12,16,52,10,26,47,29,41,24)从小到大进行排序,共要进行(    )次比较。

选项A)33

选项B)45

选项C)70

选项D)91

179、从时间上看,快速排序的平均性能好于其他排序方法,但从空间上看,快速排序需要一个栈空间来实现递归,若每趟快速排序都将记录序列均匀地分割成为长度相接近的两个子序列,则栈的最大深度(含最外层也进栈)为log2n+1;在最坏的情况下,栈的深度为(  B  )。

选项A)log2n+1

选项B)O(n)

选项C)O(log2n)

选项D)O(nlog2n)

180、在最坏情况下(如初始记录已有序),快速排序的空间复杂性为(  A  )。

选项A)O(n)

选项B)O(log2n)

选项C)(nlog2n)

选项D)O(n2)

181、用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:D

        20,15,21,25,47,27,68,35,84

        15,20,21,25,35,27,47,68,84

        15,20,21,25,27,35,47,68,84

选项A)选择排序

选项B)希尔排序

选项C)归并排序

选项D)快速排序

182、快速排序是一种(  B  )排序。

选项A)稳定

选项B)不稳定

选项C)快速的

选项D)最好的

183、设一组初始记录关键字序列为(45,80,55,40,42,85),则以第一个记录关键字45为基准而得到一趟快速排序的结果是(  C  )。

选项A)40,42,45,55,80,83

选项B)42,40,45,80,85,88

选项C)42,40,45,55,80,85

选项D)42,40,45,85,55,80

184、从未排序序列中依次取出元素与已排序序列中的元素做比较,将其放入已排序序列中的正确位置上,此方法称为(  D  )。

选项A)归并排序

选项B)选择排序

选项C)交换排序

选项D)插入排序

185、在归并排序中,归并趟数的数量级表示为O(log2n),每趟需要进行记录的比较和移动次数的数量级表示为(  A  )。

选项A)O(n)

选项B)O(log2n)  

选项C)(nlog2n)归并排序算法时间复杂度

选项D)O(n2)

186、当两个元素比较出现反序时(即逆序)就相互交换位置的排序方法叫作(  C  )。

选项A)归并排序

选项B)选择排序

选项C)交换排序

选项D)插入排序

187、设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行(  A  )趟的分配和回收才能使得初始关键字序列变成有序序列。

选项A)3

选项B)4

选项C)5

选项D)8

188、在归并排序、希尔排序、选择排序、快速排序、堆排序、归并排序和基数排序中,排序是稳定的有(  A  )

选项A)归并排序   (冒泡、插入、基数)

选项B)希尔排序

选项C)选择排序

选项D)快速排序

189、对于直接插入排序、冒泡排序、简单选择排序、堆排序、快速排序,就平均时间而言,(    )排序最佳。

选项A)直接插入排序

选项B)堆排序

选项C)快速排序

选项D)冒泡排序

190、在基数排序、希尔排序、选择排序、快速排序、堆排序、归并排序和基数排序中,排序是稳定的有(  A  )

选项A)基数排序

选项B)希尔排序

选项C)选择排序

选项D)堆排序

191、将5个不同的数据进行排序,至少需要比较(  B   )次。

选项A)1

选项B)4

选项C)10

选项D)20

192、在堆排序,快速排序和归并排序中,若从最坏情况下排序最快并要节省内存空间,则应首先选取(  A  )方法

选项A)堆排序

选项B)快速排序

选项C)归并排序

选项D)都一样

193、将8个不同的数据进行排序,至多需要比较(  D  )次。

选项A)8

选项B)9

选项C)20

选项D)28

194、在堆排序中、快速排序和归并排序中,若只从最坏的情况下排序最快并且要节省内存考虑,应选用(  A  )方法。

选项A)堆排序

选项B)快速排序

选项C)归并排序

选项D)都是一样的,选哪种排序方法都可以

195、对下列四个元素进行直接选择排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为(  B  )。

选项A)1,3,5,7,9

选项B)5,7,9,1,3

选项C)5,3,1,7,9

选项D)9,7,5,3,1

196、从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为(  D  )。

选项A)希尔排序

选项B)归并排序

选项C)插入排序

选项D)选择排序

197、在堆排序过程中,由n个待排序的记录建成堆;在每次筛选运算的过程中,堆排序算法的时间复杂性为(  A  )

选项A)O(log2n)        

选项B)O(n)

选项C)O(nlog2n)

选项D)O(n2)

198、在堆排序过程中,由n个待排序的记录建成初始堆需要(  B  )次筛选。

选项A)n       

选项B)n/2

选项C)log2n

选项D)n-1

199、设有n个待排序的记录关键字,则在堆排序中需要(  A  )个辅助记录单元。

选项A)1    

选项B)n

选项C)nlog2n

选项D)n2

200、希尔排序的增量序列必须是(  B  )。

选项A)递增的

选项B)递减的

选项C)随机的

选项D)非递减的

201、对n个元素的序列进行冒泡排序,最少的比较次数是n,此时元素的排列情况是(    )。

选项A)无序

选项B)块内无序,块间有序

选项C)已从小到大排列

选项D)已从大到小排列

202、对一组初始关键字序列(40,50,95,20,15,70,60,45,10)进行冒泡排序,则第一趟需要进行相邻记录的比较的次数为(    )。

选项A)9

选项B)4

选项C)5

选项D)6

203、对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为(  D  )

选项A)n+1

选项B)n-1

选项C)n 

选项D)n(n-1)/2

204、在利用快速排序方法对一组记录(50,40,95,20,15,70,60,45,80)进行快速排序后递归调用使用的栈所能达到的最大深度为(    )。

选项A)1

选项B)2

选项C)3

选项D)4

205、设一组初始记录关键字序列为(45,80,55,40,42,85),则以第一个记录关键字45为基准而得到一趟快速排序的结果是(  A  )。

选项A)40,42,45,55,80,85

选项B)42,40,45,80,85,88

选项C)42,40,45,55,80,85

选项D)42,40,45,85,55,80

206、快速排序算法的平均时间复杂度为(    )。

选项A)O(n2)

选项B)O(nlog2n)

选项C)O(n)

选项D)O(1)

207、设一组初始记录关键字序列为(60,80,55,40,42,85),则以第一个关键字60为基准而得到的一趟快速排序结果是(  C  )。

选项A)40,42,60,55,80,85

选项B)42,45,55,60,85,80

选项C)42,40,55,60,80,85

选项D)42,40,60,85,55,80

208、在归并排序过程中,需归并的趟数为(  B  )。

选项A)nlog2n

选项B)log2n 

选项C)n-1

选项D)n

209、假定一组记录为(46,79,56,38,40,80,46,75),对其进行归并排序的过程中,第二趟归并后的第2个子表为(    )。

选项A)[40 46 75 80]

选项B)[8075 46 40]

选项C)[7556 40 38]

选项D)[3840 56 75]

210、将5个不同的数据进行排序,至少需要比较(     )次。

选项A)1

选项B)4

选项C)10

选项D)20

211、在堆排序和快速排序中,如果从节省存储空间的角度来考虑则最好选择(    )排序。

选项A)堆排序和快速排序都不太好

选项B)快速排序

选项C)堆排序

选项D)堆排序和快速排序没太大区别

212、在内部排序中,平均比较次数最少的是(    )。

选项A)快速排序

选项B)归并排序

选项C)shell排序

选项D)选择排序

猜你喜欢

转载自blog.csdn.net/harvestwu/article/details/80870803