李春葆数据结构习题与解析Word格式文档下载.docx
《李春葆数据结构习题与解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《李春葆数据结构习题与解析Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
for(i=0;
i<
n;
i++)
for(j=0;
j<
m;
j++)
A[i][j]=0;
i=s=0;
while(s<
n)
{
i++;
/*i=i+1*/
s+=i;
/*s=s+i*/
}
s=0;
s+=B[i][j];
sum=s;
i=1;
while(i<
=n)
i=i*3;
二、线性表
单项选择题
1.一个向量第一个元素的存储地址是100,每个元素的长度为2,那么第5个元素的地址是 。
2.一个栈的入栈序列是a、b、c、d、e,那么栈的不可能输出序列是 。
3.假设一个栈的入栈序列是1、2、3、…、n,其输出序列为p1、p2、p3、…、pn,假设p1=n,那么pi为 。
A.i B.n=i
。
A.线性存储构造和链表存储构造 B.散列方式和索引方式
5.判断一个栈ST(最多元素为m)为空的条件是 。
A.ST->
top!
=0 B.ST->
top==0C.ST->
=mD.ST->
top==m
6.判断一个栈ST(最多元素为m)为满栈的条件是 。
=m-1D.ST->
top==m-1
1 ,队列的特点是 2 。
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->
front-1==m
C.QU->
front==QU->
rearD.QU->
front-QU->
rear+1
10.判断一个队列QU(最多元素为m)为满队列的条件是 。
11.判断一个循环队列QU(最多元素为m)为空的条件是 。
rear B.QU->
front!
=QU->
rear
front==(QU->
rear+1)%mD.QU->
=(QU->
rear+1)%m
12.判断一个循环队列QU(最多元素为m)为满队列的条件是 。
13循环队列用数组A[0,m-1]存放其元素值,其头尾指针分别是front和rear,那么当前队列中的元素个数是 。
A.(rear-front+m)%mB.rear-front+1 C.rear-front-1 D.rear-front
A.都是先进后出 B.都是先进先出
C.只允许在端点处插入、删除元素D.没有共同点
1.向量、栈和队列都是 构造,可以在向量的 位置插入和删除元素;
对于栈只能在 插入和删除元素;
对于队列只能在 插入元素和 删除元素。
i个元素(1≤i≤n)之前插入一个元素时,需向后挪动 个元素。
i个元素(1≤i≤n)时,需要向前挪动 个元素。
。
6.在一个循环队列中,队首指针指向队首元素的 。
7.从循环队列中删除一个元素时,其操作是 。
8.在具有n个单元的循环队列中,队满时共有 个元素的。
9.一个栈的输入序列是12345,那么栈的输出序列43512是 。
10.一个栈的输入序列是12345,那么栈的输出序列12345是 。
三、链表
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
A.p->
right=s;
s->
left=p;
p->
right->
left=s;
right=p->
right;
B.p->
C.s->
D.s->
p->
5.在一个单链表中,q所指结点是p所指结点的前驱结点,假设在q和p之间插入s结点,
那么执行 。
A.s->
next=p->
next;
next=s;
B.p->
next=s->
s->
next=p;
C.q->
next=s;
D.p->
next=q;
6.在一个单链表中,p所指结点不是最后结点,在p之后插入s所指结点,那么执行 。
B.s->
p=s;
7.在一个单链表中,假设删除p所指结点的后续结点,那么执行 。
next->
B.p=p->
next=p->
C.p->
D.p=p->
next->
9.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比拟 个结点。
A.n B.n/2C.(n-1)/2D.(n+1)/2
。
A.O
(1) B.O(n)C.O(n2)D.O(nlog2n)
11.给定有n个元素的向量,建立一个有序单链表的时间复杂度是 。
12.向一个栈顶指针为HS的链栈中插入s所指结点,那么执行 。
A.HS->
B.s->
next=HS->
HS->
next=HS;
HS=s;
D.s->
HS=HS->
13.从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删除结点的值,那么执行 。
A.x=HS;
B.x=HS->
data;
C.HS=HS->
x=HS->
D.x=HS->
14.在一个链队中,假设f和r分别为队首和队尾指针,插入s所指结点,那么执行 。
A.f->
f=s;
B.r->
r=s;
next=r;
next=f;
15.在一个链队中,假设f和r分别为队首和队尾指针,删除一个结点,那么执行 。
A.r=f->
B.r=r->
C.f=f->
D.f=r->
的链接存储表示。
表示树形构造。
3.在双链表中,每个结点有两个指针域,一个指向 ,另一个指向 。
4.在一个单链表中,p所指结点之前插入s所指向结点,可执行如下操作:
〔1〕s->
next= ;
〔2〕p->
next=s;
〔3〕t=p->
data;
〔4〕p->
data= ;
〔5〕s->
5.在一单链表中,删除p所指结点时,应执行以下操作:
〔1〕q=p->
next;
data=p->
〔3〕p->
next=;
〔4〕free(q);
7.在一个单链表中,p所指结点之后插入s所指向结点,应执行s->
next= 和
next=的操作。
8.非空的循环单链表head的尾结点〔由p所指向〕,满足 。
9.在栈顶指针为HS的链栈中,断定栈空的条件是 。
10.在栈顶指针为HS的链栈中,计算该链栈中结点个数的函数是 。
11.在HQ的链队中,断定只有一个结点的条件是 。
12.在HQ的链队中,计算该栈链中结点个数的函数是 。
四、串
1.空串与空格串是一样的,这种说法 。
2.串是一种特殊的线性表,其特殊性表达在 。
3.设两个字符串p和q,求q在p中首次出现的位置的运算称作 。
4.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x与y串的连接串,函数subs(s,i,j)返回串s的从序号i的字符开场的j个字符组成的子串,函数len(s)返回串s的长度,那么con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是 。
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
。
,其长度等于 。
=‘IAMATEACHER’,其长度是 。
6.设s1=‘GOOD’,s2=‘’,s3=‘BYE!
’,那么s1、s2和s3连接后的结果是 。
五、数组与稀疏矩阵
2.二维数组M的成员是6个字符〔每个字符占一个存储单元〕组成的串,行下标i的范围从
0到8,列下标j的范围从1到10,那么存放M至少需要 1 个字节;
M的第8列和第5
行共占 2 个字节;
假设M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先
方式存储时的 3 元素的起始地址一致。
3A.M[8][5] B.M[3][10]C.M[5][8]D.M[0][9]
3.二维数组M的成员是4个字符〔每个字符占一个存储单元〕组成的串,行下标i的范围从
0到4,列下标j的范围从0到5,M按行存储时元素M[3][5]的起始地址与M按列存储时元
素的 元素的起始地址一致。
A.M[2][4] B.M[3][4]C.M[3][5]D.M[4][4]
4.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地
址SA开场连续存放在存储器内,存放该数组至少需要的单元素是 。
A.80 B.120 C.240 D.270
5.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地
址SA开场连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为 。
A.SA+141 B.SA+144 C.SA+222 D.SA+225
6.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地
址SA开场连续存放在存储器内,该数组按列存放时,元素A[5][8]的起始地址为 。
A.SA+141 B.SA+180 C.SA+222 D.SA+225
7.稀疏矩阵一般的压缩存储方法有两种,即 。
A.二维数组和三维数组 B.三元组与散列
C.三元组与十字链表 D.散列和十字链表
8.假设用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点 。
A. 正确 B. 不正确
9.设矩阵A是一个对称矩阵,为节省存储,将其下三角局部按行序存放在一信数组B[1,n(n-1)/2]中,对下三角局部中任一元素aij(i≥j),在一组数组B的下标位置k的值是 。
A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j
1.二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),那么A[i][j]的地址是 。
2.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,那么A[6][10]的地址是 。
3.二维数组A[10..20][5..20]采用行序为主方式存储,每个元素占4个存储单元,并且A[10][5]的存储地址是1000,那么A[18][9]的地址是 。
4.有一个10阶对称矩阵A,采用压缩存储方式〔以行为主存储,且LOC(A[0][0])=1〕,那么
A[8][5]的地址是 。
5.设n行n列的下三角矩阵A已压缩到一维数组S[1..n*(n+1)/2]中,假设按行序为主存储,那么
A[i][j]对应的S中的存储位置是 。
6.一个稀疏矩阵如下图,那么对应的三元数组表示为 。
八、树形构造
1.如下图的4棵二叉树中, 不是完全二叉树。
3.在线索化二叉树中,t所指结点没有左子树的充要条件是 。
4.二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法 。
A.正确 B.错误
5.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法 。
6.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法 。
7.设高度为h的二叉树上只有度为0和度为2的结点,那么此类二叉树中所包含的结点数至少
为 。
A.2h B.2h-1 C.2h+1 D.h+1
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中结点的 。
12某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历结点访问顺序是dgbaechf,那么其后序遍历结点访问顺序是 。
A.bdgcefha B.gdbecfha C.bdgaechf D.gdbehfca
13.二叉树为二叉排序树的充分必要条件是任一结点的值均大于其左孩子的值、小于其右孩子的值,这种说法 。
A.正确 B.错误
14.按照二叉树的定义,具有3个结点的二叉树有 种。
A.3B.4 C.5D.6
A.abdgcefh B.dgbaechf C.gdbehfca D.abcdefgh
16.树的根本遍历策略可分为先根遍历和后根遍历;
二叉树根本遍历策略可分为先序遍历、
中序遍历和后序遍历。
这时,我们把由树转化得到的二叉树叫做这棵树对应的二叉树。
结论
是正确的。
A.树的先根遍历序列与二叉树的先序遍历序列一样
B.树的后根遍历序列与二叉树的后序遍历序列一样
C.树的先根遍历序列与二叉树的中序遍历序列一样
D.以上都不对
个结点。
A.16 B.32 C.31 D.10
18.在一非空二叉树的中序遍历序列中,根结点的右边 。
A.只有右子树上的所有结点 B.只有右子树上的局部结点
C.只有左子树上的所有结点 D.只有左子树上的局部结点
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子孙
构造。
A.逻辑B.逻辑和存储C.物理D.线性
1.有一棵树如下图,答复下面问题:
〔1〕这棵树的根结点是 ;
〔2〕这棵树的叶子结点是 ;
〔3〕结点c的度是 ;
〔4〕这棵树的度是 ;
〔5〕这棵树的深度是 ;
〔6〕结点c的子女是 ;
〔7〕结点c的父母结点是 。
、 、 。
3.从概念上讲,树与二叉树是二种不同的数据构造,将树转化为二叉树的根本目的是 。
4.一棵二叉树的结点数据采用顺序存储构造,存储于数组T中,如下图,那么该二叉树的链接表示形式为 。
1 2 3456789101112131415161718192021
e
a
f
d
g
c
j
i
h
b
个结点,至多有 个结点,假设按自上而下、从左到右次序给结点编号〔从1开场〕,那么编最小的叶子结点的编号是 。
6.在一棵二叉树中,度为零的结点的个数为n0,度为2的结点的个数为n2,那么有n0=。
个结点;
一棵有n个结点的满二叉树共有个叶子和个非终端结点。
,结点最少的二叉树为 。
9.现有按中序遍历二叉树的结果是abc,问有 种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是 。
10.根据二叉树的定义,具有三个结点的二叉树有 种不同的形态,它们分别是 。
11.由如下图的二叉树,答复以下问题:
〔1〕其中序遍历序列 ;
〔2〕其前序遍历序