PTA数据结构期末练习-单选题

2-1
在数据结构中,从逻辑上可以把数据结构分成( )。C
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构
D.内部结构和外部结构

2-2
与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。C
A.存储结构
B.存储实现
C.逻辑结构
D.运算实现

2-3
通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( )。B
A.数据在同一范围内取值
B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
C.每个数据元素都一样
D.数据元素所包含的数据项的个数要相等

2-4
以下说法正确的是( )。D
A.数据元素是数据的最小单位
B.数据项是数据的基本单位
C.数据结构是带有结构的各数据项的集合
D.一些表面上很不相同的数据可以有相同的逻辑结构

2-5
下列哪个函数是O(N)的?B
A. 2 N l o g N 2NlogN 2NlogN
B. l o g N 2 logN^2 logN2
C. N ( l o g N ) 2 N(logN)^2 N(logN)2
D. N 2 / 2 N^2/2 N2/2

2-6
算法的时间复杂度取决于( )。D
A.问题的规模
B.待处理数据的初态
C.计算机的配置
D.A和B

2-7
下面代码段的时间复杂度是()。D

s=0;
for ( i=0; i<n; i++ )
    for( j=0; j<n; j++ )
        s+=B[i][j];
sum=s;

A.O(1)
B.O(logn)
C.O(n)
D.O(n)

2-8
给定N×N×N的三维数组A,则在不改变数组的前提下,查找最小元素的时间复杂度是:D
A.O(N)
B.O(NlogN)
C.O(NlogN)
D.O(N3)

2-9
以下数据结构中,( )是非线性数据结构。A
A.树
B.字符串
C.队列
D.栈

2-10
下列代码

if ( A > B ) {
    for ( i=0; i<N; i++ )
        for ( j=N*N; j>i; j-- )
            A += B;
}
else {
    for ( i=0; i<N*2; i++ )
        for ( j=N*2; j>i; j-- )
            A += B;
}

的时间复杂度是:C
A.O(N)
B.O(N)
C.O(N​3)
D.O(N4)

2-11
数组A[1…5,1…6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为:C
A.1120
B.1125
C.1140
D.1145

2-12
在N个结点的顺序表中,算法的时间复杂度为O(1)的操作是:A
A.访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N)
B.在第i个结点后插入一个新结点(1≤i≤N)
C.删除第i个结点(1≤i≤N)
D.将N个结点从小到大排序

2-13
以下关于顺序表的说法中,正确的是( )。C
A.顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用
B.在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻
C.顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问
D.在顺序表中每一表元素的数据类型还可以是顺序表

2-14
线性表若采用链式存储结构时,要求内存中可用存储单元的地址B
A.必须是连续的
B.连续或不连续都可以
C.部分地址必须是连续的
D.一定是不连续的

2-15
线性表L在什么情况下适用于使用链式结构实现?A
A.需不断对L进行删除插入
B.需经常修改L中的结点值
C.L中含有大量的结点
D.L中结点结构复杂

2-16
链表不具有的特点是:B
A.插入、删除不需要移动元素
B.方便随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性长度成正比

2-17
适用于压缩存储稀疏矩阵的两种存储结构是:A
A.三元组表和十字链表
B.三元组表和邻接矩阵
C.十字链表和二叉链表
D.邻接矩阵和十字链表

2-18
在具有N个结点的单链表中,实现下列哪个操作,其算法的时间复杂度是O(N)?C
A.在地址为p的结点之后插入一个结点
B.删除开始结点
C.遍历链表和求链表的第i个结点
D.删除地址为p的结点的后继结点

2-19
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?B
A.单链表
B.仅有尾指针的单循环链表
C.仅有头指针的单循环链表
D.双链表

2-20
若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间?D
A.单链表
B.双链表
C.单循环链表
D.带头结点的双循环链表

2-21
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?C
A.单链表
B.单循环链表
C.带尾指针的单循环链表
D.带头结点的双循环链表

2-22
对于一个具有N个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂度为C
A.O(1)
B.O(N/2)
C.O(N)
D.O(N)

2-23
设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:D
A.h=t; t->next=h->next;
B.t->next=h->next; h=t;
C.h=t; t->next=h;
D.t->next=h; h=t;

2-24
在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行C
A.s->next=p; p->next=s;
B.s->next=p->next; p=s;
C.s->next=p->next; p->next=s;
D.p->next=s; s->next=p;

2-25
带头结点的单链表h为空的判定条件是:B
A.h == NULL;
B.h->next == NULL;
C.h->next == h;
D.h != NULL;

2-26
对于一非空的循环单链表,h和p分别指向链表的头、尾结点,则有:A
A.p->next == h
B.p->next == NULL
C.p == NULL
D.p == h

2-27
将两个结点数都为N且都从小到大有序的单向链表合并成一个从小到大有序的单向链表,那么可能的最少比较次数是:B
A.1
B.N
C.2N
D.NlogN

2-28
已知表头元素为c的单链表在内存中的存储状态如下表所示:现将f存放于1014H处,并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次是:D
A.1010H, 1014H, 1004H
B.1010H, 1004H, 1014H
C.1014H, 1010H, 1004H
D.1014H, 1004H, 1010H

2-29
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为:C
A.2
B.3
C.4
D.5

2-30
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?D
A.b c a e f d
B.c b d a e f
C.d c e b f a
D.a f e d c b

2-31
设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?A
A.3 2 1 5 4
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5

2-32
有六个元素以6、5、4、3、2、1的顺序进栈,问哪个不是合法的出栈序列?B
A.2 3 4 1 5 6
B.3 4 6 5 2 1
C.5 4 3 6 1 2
D.4 5 3 1 2 6

2-33
令P代表入栈,O代表出栈。若利用堆栈将中缀表达式3*2+8/4转为后缀表达式,则相应的堆栈操作序列是:C
A.PPPOOO
B.POPOPO
C.POPPOO
D.PPOOPO

2-34
表达式a*(b+c)-d的后缀表达式是:A
A.a b c + * d -
B.a b c d * + -
C.a b c * + d -
D.- + * a b c d

2-35
若top为指向栈顶元素的指针,判定栈S(最多容纳m个元素)为空的条件是:B
A.S->top == 0
B.S->top == -1
C.S->top != m-1
D.S->top == m-1

2-36
若栈采用顺序存储方式存储,现两栈共享空间V[m]:top[i]代表第i(i=1或2)个栈的栈顶;栈1的底在V[0],栈2的底在V[m-1],则栈满的条件是:D
A.|top[2]-top[1]|==0
B.top[1]+top[2]==m
C.top[1]==top[2]
D.top[1]+1==top[2]

2-37
设栈S和队列Q的初始状态均为空,元素{1, 2, 3, 4, 5, 6, 7}依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是{2, 5, 6, 4, 7, 3, 1},则栈S的容量至少是:D
A.1
B.2
C.3
D.4

2-38
给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1, p, ⋯, pn }。如果p=n,则存在多少种不同的出栈序列?B
A.n
B.n−1
C.2
D.1

2-39
为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是?B
A.堆栈
B.队列
C.树
D.图

2-40
某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a、b、c、d、e依次入此队列后再进行出队操作,则不可能得到的出队序列是:D
A.b a c d e
B.d b a c e
C.e c b a d
D.d b c a e

2-41
若用大小为6的数组来实现循环队列,且当前front和rear的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,front和rear的值分别为多少?A
A.2和0
B.2和2
C.2和4
D.2和6

2-42
如果循环队列用大小为m的数组表示,且用队头指针front和队列元素个数size代替一般循环队列中的front和rear指针来表示队列的范围,那么这样的循环队列可以容纳的元素个数最多为:B
A.m-1
B.m
C.m+1
D.不能确定

2-43
如果循环队列用大小为m的数组表示,队头位置为front、队列元素个数为size,那么队尾元素位置rear为:D
A.front+size
B.front+size-1
C.(front+size)%m
D.(front+size-1)%m

2-44
在一个不带头结点的非空链式队列中,假设f和r分别为队头和队尾指针,则插入s所指的结点运算是( )。B
A.f->next=s; f=s;
B.r->next=s; r=s;
C.s->next=s; r=s;
D.s->next=f; f=s;

2-45
循环顺序队列中是否可以插入下一个元素()。A
A.与队头指针和队尾指针的值有关
B.只与队尾指针的值有关,与队头指针的值无关
C.只与数组大小有关,与队首指针和队尾指针的值无关
D.与曾经进行过多少次插入操作有关

2-46
已知初始为空的队列 Q 的一端仅能进行入队操作,另外一端既能进行入队操作又能进行出队操作。若 Q 的入队序列是 1、2、3、4、5,则不能得到的出队序列是:D
A.5、4、3、1、2
B.5、3、1、2、4
C.4、2、1、3、5
D.4、1、3、2、5

2-47
树最适合于用来表示D
A.有序数据元素
B.无序数据元素
C.元素之间无联系的数据
D.元素之间具有分支层次关系的数据

2-48
深度为6的二叉树最多有( )个结点。B
A.64
B.63
C.32
D.31

2-49
若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( )个。B
A.9
B.11
C.15
D.不确定

2-50
一个具有1025个结点的二叉树的高h为( )个。C
A.11
B.10
C.11至1025之间
D.10至1024之间

2-51
具有9个叶结点的二叉树中有____个度为2的结点。A
A.8
B.9
C.10
D.11

2-52
度为3的树中第4层上至多有( )个结点。C
A.12
B.81
C.27
D.8

2-53
在下列存储形式中,( )不是树的存储形式。D
A.双亲表示法
B.孩子链表表示法
C.孩子兄弟表示法
D.顺序存储表示法

2-54
假设一棵二叉树的结点个数为50,则它的最小高度是( )。C
A.4
B.5
C.6
D.7

2-55
以下说法错误的是 ( )A
A.树形结构的特点是一个结点可以有多个直接前趋
B.线性结构中的一个结点至多只有一个直接后继
C.树形结构可以表达(组织)更复杂的数据
D.树(及一切树形结构)是一种"分支层次"结构
E.任何只含一个结点的集合是一棵树

2-56
由3 个结点可以构造出多少种不同的二叉树( )D
A.2
B.3
C.4
D.5

2-57
中序遍历图示二叉树的结果为 :C
A.A,B,C,D,H,E,I,F,G
B.A,B,D,H,I,E,C,F,G
C.H,D,I,B,E,A,F,C,G
D.H,I,D,B,E,F,G,A,C

2-58
已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac , 它的前序遍历是( )。D
A.acbed
B.decab
C.deabc
D.cedba

2-59
在二叉树的二叉链表结构中,指针p所指结点为叶子结点的条件是( )。B
A.p=NULL
B.p->lchild==NULL && p->rchlid==NULL
C.p->lchild==NULL
D.p->rchlid==NULL

2-60
二叉树的先序序列和中序序列相同的条件是( )。B
A.任何结点至多只有左子女的二叉树
B.任何结点至多只有右子女的二叉树
C.右子树为空
D.左子树为空

2-61
一棵二叉树中有7个度为2的结点和5个度为1的结点,其总共有( )个结点。C
A.16
B.18
C.20
D.30

2-62
用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( )C
A.n-1
B.n
C.n+l
D.2n

2-63
如果二叉树的前序遍历结果是12345,后序遍历结果是32541,那么该二叉树的中序遍历结果是什么?D
A.23145
B.23154
C.24135
D.无法确定

2-64
下面的函数PreOrderPrintLeaves(BinTree BT)按前序遍历的顺序打印出二叉树BT的所有叶子结点。则下列哪条表达式应被填在空中?D

void PreOrderPrintLeaves( BinTree BT )
{  if (BT)  {
      if (___________________)  printf("  %d", BT->Data);
      PreOrderPrintLeaves( BT->Left  );
      PreOrderPrintLeaves( BT->Right );
   }
}

A.BT->Data != 0
B.!BT->Right
C.!BT->Left
D.!(BT->Left || BT->Right)

2-65
一棵有1001个结点的完全二叉树有多少个叶子结点?D
A.250
B.254
C.500
D.501

2-66
已知二叉树树形如下 无标题.png ,其后序遍历序列为e,a,c,b,d,g,f,在二叉树中与d同层次的结点是( )。B
A.c
B.a
C.f
D.g

2-67
对二叉搜索树进行什么遍历可以得到从小到大的排序序列?C
A.前序遍历
B.后序遍历
C.中序遍历
D.层次遍历

2-68
若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:B
A.平均查找效率是O(logN)
B.最大值一定在最后一层
C.最小值一定在叶结点上
D.中位值结点在根结点或根的左子树上

2-69
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?D
A.这是一棵完全二叉树
B.所有的奇数都在叶子结点上
C.这是一棵二叉搜索树
D.2是5的父结点

2-70
将{ 6, 9, 12, 3, 4, 8 }依次插入初始为空的二叉搜索树。则该树的后序遍历结果是:D
A.4, 3, 6, 8, 12, 9
B.3, 4, 9, 8, 12, 6
C.3, 4, 6, 8, 12, 9
D.4, 3, 8, 12, 9, 6

2-71
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉搜索树。则该树的前序遍历结果是:D
A.2, 10, 15, 28, 32, 65
B.32, 2, 10, 15, 28, 65
C.10, 28, 15, 2, 65, 32
D.32, 2, 15, 10, 28, 65

2-72
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉排序树,则该树的后序遍历结果是。C
A.2, 10, 15, 28, 32, 65
B.32, 2, 10, 15, 28, 65
C.10, 28, 15, 2, 65, 32
D.32, 2, 15, 10, 28, 65

2-73
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉排序树,则该树的前序遍历结果是。D
A.2, 10, 15, 28, 32, 65
B.32, 2, 10, 15, 28, 65
C.10, 28, 15, 2, 65, 32
D.32, 2, 15, 10, 28, 65

2-74
已知由(60,30,56,78,12,45)序列构成的二叉排序树,其不成功查找的平均查找长度为( )。A
A.21/7
B.28/7
C.15/6
D.21/6

2-75
已知一棵由1、2、3、4、5、6、7共7个结点组成的二叉搜索树(查找树),其结构如图所示,问:根结点是什么?C
A.1
B.4
C.5
D.不能确定

2-76
堆的形状是一棵:D
A.二叉搜索树
B.满二叉树
C.非二叉树
D.完全二叉树

2-77
创建一个初始堆,含有N个记录,其时间复杂度是:B
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N)

2-78
哪种树,树中任何结点到根结点路径上的各结点值是有序的?C
A.二叉搜索树
B.完全二叉树
C.堆
D.以上都不是

2-79
将6、4、3、5、8、9顺序插入初始为空的最大堆(大根堆)中,那么插入完成后堆顶的元素为:D
A.3
B.5
C.6
D.9

2-80
下列的序列中,哪一组是堆?C
A.37,99,45,33,66,10,22,13
B.99,45,66,13,37,10,22,33
C.99,66,45,33,37,10,22,13
D.99,66,22,33,37,13,45,10

2-81
将数字 {10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7, 4, 11, 13, 2} 逐一插入一个初始为空的最小堆(小顶堆),得到的堆序列为:D
A.1,3,2,12,6,4,8,15,14,9,7,5,11,13,10
B.1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
C.1,2,3,6,7,5,4,15,14,12,9,10,11,13,8
D.1,3,2,6,7,5,4,15,14,12,9,10,11,13,8

2-82
用线性时间复杂度的算法将给定序列{ 28, 12, 5, 8, 19, 20, 15, 22 }调整为最大堆(大根堆),然后插入30。则结果序列为:D
A.{ 5, 8, 28, 12, 19, 20, 15, 22, 30 }
B.{ 30, 28, 20, 22, 12, 5, 15, 8, 19 }
C.{ 30, 28, 22, 20, 19, 15, 12, 8, 5 }
D.{ 30, 28, 20, 22, 19, 5, 15, 8, 12 }

2-83
在下述结论中,正确的是:A
① 只有2个结点的树的度为1;② 二叉树的度为2;③ 二叉树的左右子树可任意交换;④ 在最大堆(大顶堆)中,从根到任意其它结点的路径上的键值一定是按非递增有序排列的。
A.①④
B.②④
C.①②③
D.②③④

2-84
将 { 10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7 }
逐个按顺序插入到初始为空的最小堆中,然后连续执行两次删除最小元素操作(DeleteMin),再插入4,16,此后堆顶的元素是什么?A
A.4
B.5
C.7
D.9

2-85
利用过滤法将关键字序列 { 37, 66, 48, 29, 31, 75 } 建成的最大堆为 __C
A.75, 66, 48, 37, 31, 29
B.75, 37, 66, 29, 31, 48
C.75, 66, 48, 29, 31, 37
D.75, 48, 66, 37, 29, 31

2-86
下列关于大根堆(至少含 2 个元素)的叙述中,正确的是:(I). 可以将堆看成一棵完全二叉树 C
(II). 可以采用顺序存储方式保存堆
(III). 可以将堆看成一棵二叉排序树
(IV). 堆中的次大值一定在根的下一层
A.仅 I、II
B.仅 II、III
C.仅 I、II、IV
D.仅 I、III、IV

2-87
将关键字 6、9、1、5、8、4、7 依次插入到初始为空的大根堆 H 中,得到的 H 是:B
A.9、8、7、6、5、4、1
B.9、8、7、5、6、1、4
C.9、8、7、5、6、4、1
D.9、6、7、5、8、4、1

2-88
设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为:C
A.40
B.36
C.25
D.12

2-89
设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?B
A.0
B.2
C.4
D.5

2-90
设哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。B
A.99
B.100
C.101
D.102

2-91
已知权值集合为{5,7,2,3,6,1,4},计算带权路径长度WPL()。B
A.73
B.74
C.75
D.76

2-92
以下对于堆和哈夫曼树的描述,错误的是:B
A.堆一定是完全二叉树。
B.堆的任意非叶节点的左右子树(如果非空)互换,仍然是堆。
C.哈夫曼树的任意非叶节点的左右子(如果非空)树交换后仍是哈夫曼树。
D.对同一组权值{w1 ,w2 , …… , wn},可能存在不同构的两棵哈夫曼树。

2-93
由权值分别为8,4,6,5,7的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。C
A.30
B.60
C.69
D.90

2-94
下面几个符号串编码集合中,不是前缀编码的是( )。B
A.{0,10,110,1111}
B.{11,10,001,101,0001}
C.{00,010,0110,1000}
D.{b,c,aa,ac,aba,abb,abc}

2-95
以下说法错误的是 ( )。C
A.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
B.若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。
C.已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。
D.在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点的之后。

2-96
设有正文ADDBCBDCCBDCAD,字符集为A,B,C,D,设计一套二进制编码,使得上述正文的编码最短。正确的哈夫曼树(要求左孩子权值小于等于右孩子)以及编码是( )。D
A.A-1.jpgA:010 B:011 C:1 D:00
B.B-1.jpgA:011 B:111 C:01 D:0
C.C-1.jpgA:00 B:01 C:0 D:1
D.D-1.jpgA:00 B:01 C:10 D:11

2-97
若某二叉树有 5 个叶结点,其权值分别为 10、12、16、21、30,则其最小的带权路径长度(WPL)是:B
A.89
B.200
C.208
D.289

2-98
下列关于无向连通图特征的叙述中,正确的是:A
所有顶点的度之和为偶数
边数大于顶点个数减1
至少有一个顶点的度为1
A.只有1
B.只有2
C.1和2
D.1和3

2-99
具有5个顶点的有向完全图有多少条弧?C
A.10
B.16
C.20
D.25

2-100
对于一个具有N个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是:D
A.N−1
B.N
C.(N−1)
D.N

2-101
给定有向图的邻接矩阵如下:顶点2(编号从0开始)的出度和入度分别是:C
A.3, 1
B.1, 3
C.0, 2
D.2, 0

2-102
设无向图为 G=(V,E),其中 V={v1,v2,v3,v4},E={(v1,v2),(v3,v4),(v4,v1),(v2,v3),(v1,v3)}。则每个顶点的度依次为:C
A.2, 1, 1, 1
B.1, 1, 2, 1
C.3, 2, 3, 2
D.2, 3, 2, 3

2-105
对于给定的有向图如下,其强连通分量为:A
A.{1}, {2, 3, 4, 6}, {5}
B.{1}, {2, 3, 4}, {5, 6}
C.{1}, {2, 4, 6}, {3}, {5}
D.{1, 2, 3, 4, 5, 6}

2-107
将一个 10×10 的对称矩阵 M 的上三角部分的元素 m
​i,j(1≤i≤j≤10)按列优先存入C语言的一维数组 N 中,元素 m
​7,2 在 N在中的下标是:C
A.15
B.16
C.22
D.23

2-108
给定一有向图的邻接表如下。从顶点V1出发按深度优先搜索法进行遍历,则得到的一种顶点序列为:B
A.V1,V5,V4,V7,V6,V2,V3
B.V1,V5,V4,V7,V6,V3,V2
C.V1,V2,V3,V4,V7,V6,V5
D.V1,V5,V6,V4,V7,V2,V3

2-109
如果从无向图的任一顶点出发进行一次深度优先遍历即可访问所有顶点,则该图一定是____。B
A.完全图
B.连通图
C.有回路
D.一棵树

2-110
用邻接表表示图进行深度优先遍历时,通常借助( )来实现算法。A
A.栈
B.队列
C.树
D.图

2-111
给定无向带权图如下,以下哪个是从顶点 a 出发深度优先搜索遍历该图的顶点序列(多个顶点可以选择时按字母序)?C
A.abecdfhg
B.abcdehgf
C.abcdefgh
D.abchgfde

2-112
给定一个图的邻接矩阵如下,则从V1出发的深度优先遍历序列(DFS,有多种选择时小标号优先)是:C
A.V1, V2, V4, V3, V6, V8, V10, V9, V7, V5
B.V1, V2, V3, V4, V5, V6, V7, V9, V8, V10
C.V1, V2, V4, V6, V8, V10, V9, V7, V5, V3
D.V1, V2, V3, V5, V7, V9, V10, V6, V8, V4

2-113
对下图从顶点C出发进行深度优先搜索,哪个是错误的搜索序列?B
A.CBADEFGH
B.CDABEHFG
C.CDAEHGFB
D.CBAEFGHD

2-114
以下算法的功能是()。B

void  graph1( adjmatrix GA, int i, int n, int *visited)
{
   int k, j; Queue q;
   cout<<i<<‘ ‘;   visited[i]= 1;
   InitQueue( q);
   EnQueue (q, i);
   while ( !EmptyQueue(q) ) {
       k= OutQueue (q);
       for( j=0; j<n; j++) {
            if ( GA[k][j] != 0 && GA[k][j] != MaxValue && !visited[j] ) {
               cout<<j<<‘ ‘;  visited[j] = 1;
               EnQueue (q, j);
     }
  }
 }
}

A.从顶点i出发进行深度优先遍历
B.从顶点i出发进行广度优先遍历
C.输出顶点i的各邻接点
D.输出从顶点i出发到各顶点的路径

2-115
采用邻接表存储的图的广度优先遍历算法类似于二叉树的____算法。D
A.先序遍历
B.中序遍历
C.后序遍历
D.层次遍历

2-116
对下图从顶点C出发进行广度优先搜索,哪个是正确的搜索序列?D
A.CBDAEFGH
B.CDABEHFG
C.CBAEHGFD
D.CBDAEHFG

2-117
在图的广度优先遍历算法中用到一个队列,每个顶点最多进队____次。A
A.1
B.2
C.3
D.不确定

2-118
任何一个带权无向连通图的最小生成树——C
A.是唯一的
B.是不唯一的
C.有可能不唯一
D.有可能不存在

2-119
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:D
A.10
B.11
C.12
D.14

2-120
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:B
A.24
B.23
C.18
D.17

2-121
以下哪个不是给定无向带权图的最小生成树?D
A.A.JPG
B.B.JPG
C.C.JPG
D.D.JPG

2-122
给出如下图所示的具有 7 个结点的网 G,采用Prim算法,从4号结点开始,给出该网的最小生成树。下列哪个选项给出了正确的树结点收集顺序?D
A.4501362
B.4526301
C.4561023
D.4563201

2-123
已知无向图 G 如下所示,使用克鲁斯卡尔(Kruskal)算法求图 G 的最小生成树,加入到最小生成树中的边依次是:A
A.(b,f), (b,d), (a,e), (c,e), (b,e)
B.(b,f), (b,d), (b,e), (a,e), (c,e)
C.(a,e), (b,e), (c,e), (b,d), (b,f)
D.(a,e), (c,e), (b,e), (b,f), (b,d)

2-124
我们用一个有向图来表示航空公司所有航班的航线。下列哪种算法最适合解决找给定两城市间最经济的飞行路线问题?A
A.Dijkstra算法
B.Kruskal算法
C.深度优先搜索
D.拓扑排序算法

2-125
数据结构中Dijkstra算法用来解决哪个问题?B
A.关键路径
B.最短路径
C.拓扑排序
D.字符串匹配

2-126
若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:A
A.count[S]=1; 对于其他顶点V则令count[V]=0
B.count[S]=0; 对于其他顶点V则令count[V]=1
C.对所有顶点都有count[V]=1
D.对所有顶点都有count[V]=0

2-127
使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是:A
A.6, 7, 5, 3, 2, 4
B.6, 2, 5, 7, 3, 4
C.2, 3, 4, 5, 6, 7
D.2, 4, 3, 6, 5, 7

2-128
试利用 Dijkstra 算法求下图中从顶点 A 到其他顶点的最短距离及对应的路径。下列那个序列给出了可能的顶点收集顺序?A
A.ACFEDBG
B.ACDBFEG
C.ACDGFBE
D.ABCDEFG

2-130
使用 Dijkstra 算法求下图中从顶点 1 到其余各顶点的最短路径,将当前找到的从顶点 1 到顶点 2、3、4、5 的最短路径长度保存在数组 dist 中,求出第二条最短路径后,dist 中的内容更新为:C
A.26、3、14、6
B.25、3、14、6
C.21、3、14、6
D.15、3、14、6

2-131
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:B
A.冒泡排序
B.快速排序
C.归并排序
D.插入排序

2-132
对初始数据序列{ 8, 3, 9, 11, 2, 1, 4, 7, 5, 10, 6 }进行希尔排序。若第一趟排序结果为( 1, 3, 7, 5, 2, 6, 4, 9, 11, 10, 8 ),第二趟排序结果为( 1, 2, 6, 4, 3, 7, 5, 8, 11, 10, 9 ),则两趟排序采用的增量(间隔)依次是:D
A.3, 1
B.3, 2
C.5, 2
D.5, 3

2-133
选择一个排序算法时,除算法的时空效率外,下列因素中,还需要考虑的是:D
I、数据的规模
II、数据的存储方式
III、算法的稳定性
IV、数据的初始状态
A.仅 III
B.仅 I、II
C.仅 II、III、IV
D.I、II、III、IV

2-134
排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列中,不可能是快速排序第二趟结果的是:D
A.5, 2, 16, 12, 28, 60, 32, 72
B.2, 16, 5, 28, 12, 60, 32, 72
C.2, 12, 16, 5, 28, 32, 72, 60
D.5, 2, 12, 28, 16, 32, 72, 60

2-135
对大部分元素已有序的数组进行排序时,直接插入排序比简单选择排序效率更高,其原因是:A
(I). 直接插入排序过程中元素之间的比较次数更少
(II). 直接插入排序过程中所需要的辅助空间更少
(III). 直接插入排序过程中元素的移动次数更少
A.仅 I
B.仅 III
C.仅 I、II
D.I、II 和 III

2-136
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?B
(设待排元素个数N>2)
A.冒泡排序
B.插入排序
C.堆排序
D.快速排序

2-137
对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是:A
A.冒泡排序
B.希尔排序
C.归并排序
D.基数排序

2-138
下面四种排序算法中,稳定的算法是:C
A.堆排序
B.希尔排序
C.归并排序
D.快速排序

2-139
对于7个数进行冒泡排序,需要进行的比较次数为:C
A.7
B.14
C.21
D.49

2-140
对N个记录进行归并排序,归并趟数的数量级是:A
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N)

2-141
下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(NlogN)的是:C
A.冒泡排序
B.直接选择排序
C.堆排序
D.快速排序

2-142
设有100个元素的有序序列,如果用二分插入排序再插入一个元素,则最大比较次数是:A
A.7
B.10
C.25
D.50

2-143
有组记录的排序码为{ 46,79,56,38,40,84 },则利用堆排序的方法建立的初始堆为:D
A.79,46,56,38,40,80
B.84,79,56,46,40,38
C.84,56,79,40,46,38
D.84,79,56,38,40,46

2-144
对N个记录进行快速排序,在最坏的情况下,其时间复杂度是:C
A.O(N)
B.O(NlogN)
C.O(N)
D.O(NlogN)

2-145
有组记录的排序码为{46,79,56,38,40,84 },采用快速排序(以位于最左位置的对象为基准而)得到的第一次划分结果为:D
A.{38,46,79,56,40,84}
B.{38,79,56,46,40,84}
C.{38,46,56,79,40,84}
D.{40,38,46,56,79,84}

2-146
对N个元素采用简单选择排序,比较次数和移动次数分别为:A
A.O(N), O(N)
B.O(N), O(logN)
C.O(logN), O(N)
D.O(NlogN), O(NlogN)

2-147
对于10个数的简单选择排序,最坏情况下需要交换元素的次数为:A
A.9
B.36
C.45
D.100

2-148
对N个记录进行堆排序,最坏的情况下时间复杂度是:C
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N)

2-149
对N个记录进行堆排序,需要的额外空间为:A
A.O(1)
B.O(logN)
C.O(N)
D.O(NlogN)

2-150
在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左指针停止移动,而右指针在同样情况下却不停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?D
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N)

2-151
下列排序方法中,()是稳定的排序方法?B
A.希尔排序
B.直接插入排序
C.快速排序
D.直接选择排序

2-152
下面的四种排序方法中,()的排序过程中的比较次数与初始状态无关。A
A.选择排序法
B.快速排序
C.堆排序
D.插入排序

2-153
某内排序方法的稳定性是指()。C
A.该排序算法不允许有相同的关键字记录
B.该排序算法允许有相同的关键字记录
C.以上都不对
D.平均时间为0(nlogn)的排序方法

2-154
下列排序算法中( )排序在一趟结束后不一定能选出一个元素放在其最终位置上。C
A.选择
B.冒泡
C.归并
D.堆

2-155
在散列表中,所谓同义词就是:B
A.两个意义相近的单词
B.具有相同散列地址的两个元素
C.被映射到不同散列地址的一个元素
D.被不同散列函数映射到同一地址的两个元素

2-156
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:C
A.顺序查找
B.二分法
C.利用哈希(散列)表
D.利用二叉搜索树

2-157
对包含N个元素的散列表进行查找,平均查找长度为:D
A.O(1)
B.O(logN)
C.O(N)
D.不确定

2-158
设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:D
A.8
B.9
C.10
D.11

2-159
假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测?D
A.K−1
B.K
C.K+1
D.K(K+1)/2

2-160
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:h
​i(k)=(H(k)±i)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:B
A.0
B.2
C.6
D.15

2-161
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:h
​i(k)=(H(k)±i)%17将关键字序列{ 23, 22, 7, 26, 9, 6 }依次插入到散列表中。那么元素6存放在散列表中的位置是:D
A.15
B.10
C.6
D.2

2-162
设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是( )D
A.8
B.3
C.5
D.9

2-163
假定有k个关键字互为同义词,若用线性探测法把这k个关键字存入散列表中,至少要进行多少次探测?( )D
A.k-1次
B.k次
C.k+1次
D.k(k+1)/2次

2-164
现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:C
A.4
B.5.25
C.6
D.6.29

2-165
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用平方探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 __C
A.0.33
B.1.17
C.1.25
D.1.33

2-166
已知线性表的关键字集合 { 21,11, 13,25,48,6,39,83,30,96,108 },散列函数为 h(key)=key%11,采用分离链接法解决冲突。则成功查找的平均查找长度为 __C
A.1.18
B.1.27
C.1.36
D.2.36

2-167
将关键字序列 { 7,8,30,11,18,9,14 },散列存储到散列列表中,散列表的存储空间是一个下标从 0 开始的一维数组。处理冲突采用线性探测法。散列函数为 h(key)=(key×3)% 表长,要求装入因子为 0.7。则成功查找的平均查找长度为 __C
A.1.57
B.1.00
C.1.14
D.1.29

  • 15
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值