s+=B[i][j];
sum=s;
10.下面程序段的时间复杂度是 。
i=1;
while(i<=n)
i=i*3;
二、线性表
单项选择题
1.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 。
A.110 B.108 C.100 D.120
2.一个栈的入栈序列是a、b、c、d、e,则栈的不可能输出序列是 。
A.edcba B.decba C.dceab D.abcde
3.若一个栈的入栈序列是1、2、3、…、n,其输出序列为p1、p2、p3、…、pn,若p1=n,则pi为 。
A.i B.n=iC.n-i+1 D.不确定
4.栈结构通常采用的两种存储结构是 。
A.线性存储结构和链表存储结构 B.散列方式和索引方式
C.链表存储结构和数组 D.线性存储结构和非线性存储结构
5.判断一个栈ST(最多元素为m)为空的条件是 。
A.ST->top!
=0 B.ST->top==0C.ST->top!
=mD.ST->top==m
6.判断一个栈ST(最多元素为m)为满栈的条件是 。
A.ST->top!
=0 B.ST->top==0C.ST->top!
=m-1D.ST->top==m-1
7.栈的特点是 1 ,队列的特点是 2 。
A.先进先出 B.先进后出
8.一个队列的入队序列是1、2、3、4,则队列输出序列是 。
A.4、3、2、1 B.1、2、3、4 C.1、4、3、2D.3、2、4、1
9.判断一个队列QU(最多元素为m)为空的条件是 。
A.QU->rear-QU->front==m B.QU->rear-QU->front-1==m
C.QU->front==QU->rearD.QU->front-QU->rear+1
10.判断一个队列QU(最多元素为m)为满队列的条件是 。
A.QU->rear-QU->front==m B.QU->rear-QU->front-1==m
C.QU->front==QU->rearD.QU->front-QU->rear+1
11.判断一个循环队列QU(最多元素为m)为空的条件是 。
A.QU->front==QU->rear B.QU->front!
=QU->rear
C.QU->front==(QU->rear+1)%mD.QU->front!
=(QU->rear+1)%m
12.判断一个循环队列QU(最多元素为m)为满队列的条件是 。
A.QU->front==QU->rear B.QU->front!
=QU->rear
C.QU->front==(QU->rear+1)%mD.QU->front!
=(QU->rear+1)%m
13循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是 。
A.(rear-front+m)%mB.rear-front+1 C.rear-front-1 D.rear-front
14.栈和队列的共同点是 。
A.都是先进后出 B.都是先进先出
C.只允许在端点处插入、删除元素D.没有共同点
填空题
1.向量、栈和队列都是 结构,可以在向量的 位置插入和删除元素;对于栈只能在 插入和删除元素;对于队列只能在 插入元素和 删除元素。
2.在一个长度为n的向量中的第i个元素(1≤i≤n)之前插入一个元素时,需向后移动 个元素。
3.在一个长度为n的向量中的删除第i个元素(1≤i≤n)时,需要向前移动 个元素。
4.向栈中压入元素的操作是 。
5.对栈进行退栈时的操作是 。
6.在一个循环队列中,队首指针指向队首元素的 。
7.从循环队列中删除一个元素时,其操作是 。
8.在具有n个单元的循环队列中,队满时共有 个元素的。
9.一个栈的输入序列是12345,则栈的输出序列43512是 。
10.一个栈的输入序列是12345,则栈的输出序列12345是 。
三、链表
单项选择题
1.不带头结点的单链表head为空的判定条件是 。
A.head==NULL B.head->nxt==NULL C.head->next==head D.head!
=NULL
2.带头结点的单链表head为空的判定条件是 。
A.head==NULL B.head->nxt==NULL C.head->next==head D.head!
=NULL
3.非空的循环单链表head的尾结点(由p所指向)满足 。
A.p->next==NULL B.p==NULL C.p->next==head D.p==head
4.在循环双链表的p所指结点之后插入s所指结点的操作是 。
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;
5.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,
则执行 。
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;
6.在一个单链表中,已知p所指结点不是最后结点,在p之后插入s所指结点,则执行 。
A.s->next=p;p->next=s; B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s; D.p->next=s;s->next=p;
7.在一个单链表中,若删除p所指结点的后续结点,则执行 。
A.p->next=p->next->next; B.p=p->next;p->next=p->next->next;
C.p->next=p->next; D.p=p->next->next;
9.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较 个结点。
A.n B.n/2C.(n-1)/2D.(n+1)/2
10.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是 。
A.O
(1) B.O(n)C.O(n2)D.O(nlog2n)
11.给定有n个元素的向量,建立一个有序单链表的时间复杂度是 。
A.O
(1) B.O(n)C.O(n2)D.O(nlog2n)
12.向一个栈顶指针为HS的链栈中插入s所指结点,则执行 。
A.HS->next=s; B.s->next=HS->next;HS->next=s;
C.s->next=HS;HS=s; D.s->next=HS;HS=HS->next;
13.从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删除结点的值,则执行 。
A.x=HS;HS=HS->next;B.x=HS->data;
C.HS=HS->next;x=HS->data;D.x=HS->data;HS=HS->next;
14.在一个链队中,假设f和r分别为队首和队尾指针,插入s所指结点,则执行 。
A.f->next=s;f=s; B.r->next=s;r=s;
C.s->next=r;r=s; D.s->next=f;f=s;
15.在一个链队中,假设f和r分别为队首和队尾指针,删除一个结点,则执行 。
A.r=f->next; B.r=r->next;
C.f=f->next; D.f=r->next;
填空题
1.单链表是 的链接存储表示。
2.可以使用 表示树形结构。
3.在双链表中,每个结点有两个指针域,一个指向 ,另一个指向 。
4.在一个单链表中,p所指结点之前插入s所指向结点,可执行如下操作:
(1)s->next= ;
(2)p->next=s;
(3)t=p->data;
(4)p->data= ;
(5)s->data= ;
5.在一单链表中,删除p所指结点时,应执行以下操作:
(1)q=p->next;
(2)p->data=p->next->data;
(3)p->next=;
(4)free(q);
6.带头结点的单链表head为空的条件是 。
7.在一个单链表中,p所指结点之后插入s所指向结点,应执行s->next= 和
p->next=的操作。
8.非空的循环单链表head的尾结点(由p所指向),满足 。
9.在栈顶指针为HS的链栈中,判定栈空的条件是 。
10.在栈顶指针为HS的链栈中,计算该链栈中结点个数的函数是 。
11.在HQ的链队中,判定只有一个结点的条件是 。
12.在HQ的链队中,计算该栈链中结点个数的函数是 。
八、树形结构
单项选择题
1.如图所示的4棵二叉树中, 不是完全二叉树。
3.在线索化二叉树中,t所指结点没有左子树的充要条件是 。
A.t->left==NULL B.t->ltag==1C.t->ltag==1且t->left==NULLD.以上都不对
4.二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法 。
A.正确 B.错误
5.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法 。
A.正确 B.错误
6.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法 。
A.正确 B.错误
7.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少
为 。
A.2h B.2h-1 C.2h+1 D.h+1
8.如图所示二叉树的中序遍历序列是 。
A.abcdgef B.dfebagc C.dbaefcg D.defbagc
9.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,前序遍历序列是 。
A.acbed B.decab C.deabc D.cedba
10.如果T2是由有序树T转换而来的二叉树,那么T中结点的前序就是T2中结点的 。
A.前序B.中序 C.后序D.层次序
11.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的 。
A.前序B.中序 C.后序D.层次序
12某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历结点访问顺序是dgbaechf,则其后序遍历结点访问顺序是 。
A.bdgcefha B.gdbecfha C.bdgaechf D.gdbehfca
13.二叉树为二叉排序树的充分必要条件是任一结点的值均大于其左孩子的值、小于其右孩子的值,这种说法 。
A.正确 B.错误
14.按照二叉树的定义,具有3个结点的二叉树有 种。
A.3B.4 C.5D.6
15.如图所示二叉树的中序遍历序列是 。
A.abdgcefh B.dgbaechf C.gdbehfca D.abcdefgh
16.树的基本遍历策略可分为先根遍历和后根遍历;二叉树基本遍历策略可分为先序遍历、
中序遍历和后序遍历。
这时,我们把由树转化得到的二叉树叫做这棵树对应的二叉树。
结论
是正确的。
A.树的先根遍历序列与二叉树的先序遍历序列相同
B.树的后根遍历序列与二叉树的后序遍历序列相同
C.树的先根遍历序列与二叉树的中序遍历序列相同
D.以上都不对
17.深度为5的二叉树至多有 个结点。
A.16 B.32 C.31 D.10
18.在一非空二叉树的中序遍历序列中,根结点的右边 。
A.只有右子树上的所有结点 B.只有右子树上的部分结点
C.只有左子树上的所有结点 D.只有左子树上的部分结点
19.树最适合用来表示 。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据
20任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序 。
A.不发生改变 B.发生改变 C.不能确定 D.以上都不对
21.实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用
存储结构。
A.二叉链表 B.广义表存储结构 C.三叉链表 D.顺序存储结构
22.对于一个满二叉树,m个树叶,n个结点,深度为h,则 。
A.n=h+m B.h+m=2n C.m=h-1 D.n=2h-1
23.如果某二叉树的前序为stuwv,中序为uwtvs,那么该二叉树的后序 。
A.uwvts B.vwuts C.wuvts D.wutsv
25.如图所示的T2是由有序树T1转换而来的二叉树,那么树T1有 个叶结点。
A.4B.5C.6D.7
26.设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是 。
A.n在m右方 B.n是m祖先 C.n在m左方 D.n是m子孙
27.线索二叉树是一种 结构。
A.逻辑B.逻辑和存储C.物理D.线性
填空题
1.有一棵树如图所示,回答下面问题:
(1)这棵树的根结点是 ;
(2)这棵树的叶子结点是 ;
(3)结点c的度是 ;
(4)这棵树的度是 ;
(5)这棵树的深度是 ;
(6)结点c的子女是 ;
(7)结点c的父母结点是 。
2.指出树和二叉树的三个主要差别 、 、 。
3.从概念上讲,树与二叉树是二种不同的数据结构,将树转化为二叉树的基本目的是 。
4.一棵二叉树的结点数据采用顺序存储结构,存储于数组T中,如图所示,则该二叉树的链接表示形式为 。
1 2 3456789101112131415161718192021
e
a
f
d
g
c
j
i
h
b
5.深度为k的完全二叉树至少有 个结点,至多有 个结点,若按自上而下、从左到右次序给结点编号(从1开始),则编最小的叶子结点的编号是 。
6.在一棵二叉树中,度为零的结点的个数为n0,度为2的结点的个数为n2,则有n0=。
7.一棵二叉树的第k层最多有 个结点;一棵有n个结点的满二叉树共有个叶子和个非终端结点。
8.结点最少的树为 ,结点最少的二叉树为 。
9.现有按中序遍历二叉树的结果是abc,问有 种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是 。
10.根据二叉树的定义,具有三个结点的二叉树有 种不同的形态,它们分别是 。
11.由如图所示的二叉树,回答以下问题:
(1)其中序遍历序列 ;
(2)其前序遍历序列 ;
(3)其后序遍历序列 ;
(4)该二叉树的中序线索二叉树为 ;
(5)该二叉树的后序线索二叉树为 ;
(6)该二叉树对应的森林是 。
12.已知一棵树如图所示,其孩子兄弟表示为 。
13.以数据集{4,5,6,7,10,12,18}为结点权值所构造的哈夫曼树为 ,其带权路径长度为 。
九、图
1.在一个图中,所有顶点的度数之和等于所有边数的 倍。
A.1/2 B.1 C.2 D.4
2.在一个有向图中,所有顶点的入度之和等于所有顶点的出度这和 倍。
A.1/2 B.1 C.2 D.4
3.一个有n个顶点的无向图最多有 条边。
A.n B.n(n-1) C.n(n-1)/2 D.2n
4.具有4个顶点的无向完全图有 条边。
A.6 B.12 C.16 D.20
5.具有6个顶点的无向图至少应有 条边才能确保是一个连通图。
A.5 B.6 C.7 D.8
6.在一个具有n个顶点的无向图中,要连通全部顶点至少需要 条边。
A.n B.n+1 C.n-1 D.n/2
7.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是 。
A.n B.(n-1)2 C.n-1 D.n2
8.对于一个具有n个顶点和e条边的无向图,若采用邻接矩阵表示,则表头向量的大小是 1 ;所有邻接矩阵中的结点总数是2。
1A.n B.n+1 C.n-1 D.n+e
2A.e/2 B.e C.2e D.n+e
9.已知一个图如图所示,若从顶点a出发按深度搜索法进行遍历,则可得到顶点序列为 1 ;按宽度搜索法进行遍历,则可得到顶点序列为 2 。
1A.abecdf B.acfebd