2021-06-08

单选(选择1个正确答案填入右边的括号内,不选、错选、多选均不得分,每题1分)
1、下面算法的时间复杂度为( A )。
tmp=i; i=j; j=temp;
A. O(1) B.O(n2) C. O(n3) .D. O(log2n)
2、下面程序的时间复杂度为( 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)
3、设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是( B )。
A.线性结构 B. 树型结构 C.物理结构 D. 图型结构
4、在下列数据结构中,( C )具有先进先出特性。
A.线性表 B.栈 C.队列 D.广义表
5、下面关于线性表的叙述错误的是( )。
A、线性表采用顺序存储必须占用一片连续的存储空间
B、线性表采用链式存储不必占用一片连续的存储空间
C、线性表采用链式存储便于插入和删除操作的实现
6、栈和队列的共同特点是( A )。
A.只允许在端点处插入和删除元素 B.都是先进后出
C.都是先进先出 D.没有共同点
7、设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( A )个元素。
A.n-i B. n+l -i C. n-1-i D.i
8、设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
A.单向链表 B.单向循环链表
9、用front和rear分别表示循环队列的队头和队尾指针,假设采用少用一个元素解决队空队满都有队头和队尾指针相等的问题,则判断队满的条件是( )。
A 、front+1rear B 、frontrear
C 、front0 D、(rear+1)%Mfront
10、字符串的长度是指( )。
A串中不同字符的个数 B串中不同字母的个数
C串中所含字符的个数 D 串中不同数字的个数
11、有关二叉树下列说法正确的是( )。
A、二叉树是度为2的树 B、一棵二叉树的度可以小于2
C、一棵二叉树至少有一个结点的度为2 D、二叉树中任一结点的度都为2
12、、队列的先进先出特征是指( )。
A.最后插入队列的元素总是最后被删除
B.当同时进行插入、删除操作时,总是插入操作优先
C.每当有删除操作时,总要先做一次插入操作
D.每次从队中删除的元素总是最后插入的元素
13、用front和rear分别表示循环队列的队头和队尾指针,假设采用少用一个元素解决队空队满都有队头和队尾指针相等的问题,则判断队满的条件是( )。
A 、front+1rear B 、frontrear
C 、front0 D、(rear+1)%Mfront
14、设某二叉树中度数为0的结点数为4,度数为1的结点数为2,那么度数为2的结点数为( )。
A.2 B. 3 C.4 D.5
15、若某二叉树的先序序列和中序序列正好相同,则该二叉树一定是( )的二叉树。
A、所有结点没有左孩子 B、所有结点没有右孩子
20、设一棵完全二叉树中有65个结点,则该完全二叉树的深度为( )。
A.8 B.7 C. 6 D 5

21、在有n个结点的二叉树的二叉链表表示中,空指针数为( )。
A.不定 B.n+1 C.n D.n-1
C、任意二叉树 D、所有分支结点的度都为1
22、假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树的结点数为( )个?
A.6 B.7 C.8 D.9
23、设某强连通图中有n个顶点,则该强连通图中至少有( )条边?
A.n(n-1) B. n+1 C. n D.n(n+1)
24、设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5 B.6 C.7 D.8
25、用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为( )。
A、第i行非0元素的个数 B、第i列非0元素的个数
C、第i行0元素的个数 D、第i列0元素的个数
26、设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过( )。
A.log2n+1 B. log2n-1 C. log2n D. log2(n+1)
27、若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
A.1,2,3 B.9,5,2,3
C.9,5,3 D.9,4,2,3
28、下列排序方法中,时间复杂度不受数据初始状态的影响,恒为O(nlog2n)的排序方法是 。
A、堆排序 B、冒泡排序 C、快速排序 D、直接选择排序
29、下列查找方法中,( )适用于查找有序单链表。
A顺序查找 B二分查找 C分块查找 D哈希查找
30、下列排序方法中,最坏情况下比较次数最少的是( )。
A.冒泡排序 B.简单选择排序 C.直接插入排序 D.堆排序
31、在带权有向图中求两个结点之间的最短路径可以采用的算法是( )
A.迪杰斯特拉(Dijkstra)算法 B.克鲁斯卡尔(Kruskal)算法
C.普里姆(Prim)算法 D.深度优先搜索(DFS)算法
32.二分查找(Binary Search)算法的时间复杂度是( )
A.O(n2) B.O(nlog2n)
C.O(n) D.O(log2n)
33.在序列50,72,43,85,75,20,38,45,65,60,构造对应的二叉排序树以后,查找元素60要进行的比较次数是( )
A.2 B.3
C.4 D.5

二、 判断分析题:(判断正确1分,给出答案分析3分)
1、栈和队列也是线性表。如果需要,可对它们中的任一元素进行操作。
2、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为:s->next=p->next;p->next=s;
3、在单链表P指针所指结点之后插入S结点的操作是:P->next= S ; S-> next = P->next;
4、设输入序列为a、b、c、d、e,则通过栈的作用后可能得到一个输出序列为:e、d、c、b、a,请列出其它三种可能的输出序列。
5、假设T是一棵树,B是对应的二叉树。则T的后根遍历相当于B的后序遍历。
在深度为7的满二叉树中,度为2的结点个数为62。
6、设某棵完全二叉树中有100个结点,则该二叉树中有50个叶子结点。
7、给出二叉树的先序序列和中序序列可以构造唯一的这棵二叉树。
8、含有60个叶子结点的二叉树的最小高度是7。
9、设完全二叉树中根结点的编号为 1,结点数为n;那么编号为 i 的结点存在右孩子的条件为2i<=n,右孩子结点的编号为2i。
10、用邻接表表示有向图G的存储结构中,则有图中顶点vi的入度为第i个链表的结点个数。
三、 程序填空题:(每空2分)
1、下面程序段利用顺序栈判断一个字符串是否是对称串。
bool symmetry(ElemType str[])
{ int i; ElemType e; SqStack *st;
InitStack(st);
for (i=0;str[i]!=’\0’;i++) //将串所有元素进栈
(1);
for (i=0;str[i]!=’\0’;i++)
{ Pop(st,e); //退栈元素e
if ((2)
___) //若e与当前串元素不同则不是对称串
{ DestroyStack(st); //销毁栈
return false;
}
}
DestroyStack(st); //销毁栈
return true;
}
2、下面程序段的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。
void CreateLinkR(LinkNode *&L,ElemType a[],int n)
{ LinkNode *s,*r;
int i;
L=(LinkNode *)malloc(sizeof(LinkNode));
(1)_____________________;
for (i=0;i<n;i++)
{ s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
(2)___________________________;
r=s;
}
r->next=NULL;
}
3、下面算法是在单链表L中第i的位置插入元素e,请在下划线处填上正确的内容。
bool ListInsert(LinkNode *&L,int i,ElemType e)
{
int j=0;
LinkNode *p=L,*s;
while (j<i-1 && p!=NULL)
{ j++;
(5)________________;
}
if (p==NULL)
return false;
else
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=e;
(6);
(7)
;
return true;
}
}
4、下面程序段的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。
void CreateLinkR(LinkNode *&L,ElemType a[],int n)
{ LinkNode *s,*r;
int i;
L=(LinkNode *)malloc(sizeof(LinkNode));
(1)_____________________;
for (i=0;i<n;i++)
{ s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
(2)___________________________;
r=s;
}
r->next=NULL;
}
四、简答题:(每题5分)
1、请指出队、栈和线性表三者的区别。
2、分别阐述线性表中顺序存储和链式存储的特点

3、设某棵二叉树的中序遍历序列为BDCEAFHG,后序遍历序列为DECBHGFA,要求构造该二叉树并写出它的先序遍历序列。
4、(1)给出图的邻接矩阵表示;
(2)给出图的邻接表表示。
5、已知含五个顶点A,B,C,D,E的连通带权图的邻接矩阵如下图所示,试画出它所表示的连通带权图

给出题中连通带权图的最小生成树,并给出最小权值

五、综合应用题:每题6分
1、设有一组初始记录关键字为(7,16,4,8,20,9,6),要求构造一棵二叉排序树并计算其成功平均查找长度。
2、求长度为n的顺序表中删除一个结点时所需要移动元素次数的期望值(平均次数)Ede(n)。
3、写出对序列(45,80,48,40,22,78,30,50) 进行冒泡排序的详细排序过程。
4、若某通信电文由8种字母a、b、c、d、e、f、g、h组成,字母在电文中出现的频率分别是0.10、0.07、0.16、0.05、0.19、0.23、0.12、0.08
试为这8个字母设计哈夫曼编码。
5、一棵度为4的树中,度为i(i>=1)的结点个数有i个,问该树中有多少个叶子结点?
6、有序表序列{10,13,25,35,42,56,65,77,89},给出折半查找值为65的过程。
7、给定一组关键字(41,62,13,84,35,96,57,39,79,61,15,83),试给出快速排序算法第一轮的排序结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值