数据结构习试题库汇总Word格式.docx
《数据结构习试题库汇总Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构习试题库汇总Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
101B2(5).下面程序的时间复杂度为(B)。
x=0;
for(i=1;
i<
n;
i++)
for(j=i+1;
j<
=n;
j++)
x++;
A.O(
)B.O(n2)C.O
(1)D.O(n)
101B2(6).下面程序的时间复杂度为(C)。
for(i=0;
m;
for(j=0;
A[i][j]=i*j;
A.O(m2)B.O(n2)C.O(m×
n)D.O(m+n)
101C2(7).下面程序段的执行次数为(B)。
n-1;
j>
i;
state;
A.n(n+1)/2B.(n-1)(n+2)/2C.n(n+1)/2D.(n-1)(n+2)
101D3(8).下面程序的时间复杂度为(A)。
t;
c[i][j]=0;
for(k=0;
k<
k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
A.O(m×
n×
t)B.O(m+n+t)C.O(m+n×
t)D.O(m×
t+n)
102A1(9).顺序表的特点是(B)。
A.表中元素的个数为表长B.按顺序方式存储数据元素
C.逻辑结构中相邻的结点在存储结构中仍相邻D.按表中元素的次序存储
102C2(10).设顺序表共有n个元素,用数组elem存储,实现在第i个元素之前插入一个元素e的操作,其主要语句为(D)。
A.FORj=nDOWNTOiDOelem[j]=elem[j+1];
elem[i]=e;
B.FORj=iTOnDOelem[j]=elem[j+1];
C.FORj=iTOnDOelem[j+1]=elem[j];
D.FORj=nDOWNTOiDOelem[j+1]=elem[j];
102D2(11).顺序表有5个元素,设在任何位置上插入元素是等概率的,则在该表中插入一个元素时所需移动元素的平均次数为(C)。
A.3B.2C.2.5D.5
102D2(12).设顺序表有9个元素,则在第3个元素前插入一个元素所需移动元素的个数为(C)。
A.9B.4.5C.7D.6
102D3(13).设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为(B)。
A.236B.239C.242D.245
102D2(14).设顺序表的第5个元素的存储地址为200,且每个元素占一个存储单元,则第14个元素的存储地址为(B)。
A.208B.209C.210D.214
103D3(15).设p为指向双向循环链表中某个结点的指针,p所指向的结点的两个链域分别用p->
llink和p->
rlink表示,则下列等式中(D)成立。
A.p=p->
llinkB.p=p->
rlinkC.p=p->
llink->
llinkD.p=p->
rlink
103A1(16).线性表采用链式存储时,其地址(D)。
A.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以
103B1(17).线性表是(A)。
A.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空
D.一个无限序列,不可以为空
103B1(18).链式存储的线性表中的指针指向其(B)。
A.前趋结点B.后继结点C.物理前趋D.物理后继
103C2(19).设在链式存储的线性表中,设结点结构为datalink,欲在p结点后插入一个结点q的关键步骤为(A)。
A.q->
link=p->
link;
p->
link=q;
B.p->
link=q->
C.q->
q->
link=p;
D.p->
103C3(20).设有指针head指向的带表头结点的单链表,现将指针p指向的结点插入表中,使之成为第一个结点,其操作是(A)(其中,p->
next、head->
next分别表示p、head所指结点的链域)。
A.p->
next=head->
next;
head->
next=p;
B.p->
head=p;
C.p->
next=head;
p=head;
104A1(21).在栈中,下列说法正确的是(A)。
A.每次插入总是在栈顶,每次删除也总是在栈顶。
B.每次插入总是在栈顶,每次删除总是在栈底。
C.每次插入总是在栈底,每次删除总是在栈顶。
D.每次插入总是在栈底,每次删除也总是在栈底。
104B2(22).设有一个栈,按A、B、C的顺序进栈,则下列(C)为不可能的出栈序列。
A.ABCB.CBAC.CABD.ACB
104B2(23).设有一个栈,按A、B、C、D的顺序进栈,则下列(D)为可能的出栈序列。
A.DCABB.CDABC.DBACD.ACDB
104A2(24).顺序栈的上溢是指(B)。
A.栈满时作退栈运算B.栈满时作进栈运算C.栈空时作退栈运算D.栈空时作进栈运算
104D3(25).顺序栈S中top为栈顶指针,指向栈顶元素所在的位置,elem为存放栈的数组,则元素e进栈操作的主要语句为(D)。
A.s.elem[top]=e;
s.top=s.top+1;
B.s.elem[top+1]=e;
C.s.top=s.top+1;
s.elem[top+1]=e;
D.s.top=s.top+1;
s.elem[top]=e;
104C2(26).设有5个元素A,B,C,D,E顺序进栈(进栈过程中可以出栈),出栈后依出栈次序进入队列,已知其出队次序为D,C,E,B,A,则该栈容量必定不小于(C)。
A.2B.3C.4D.5
104B2(27).设栈S的初始状态为空,现有五个元素组成的序列1,2,3,4,5,对该序列在栈S上依次进行PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH操作,出栈的元素序列是(C)。
A.5,4,3,2,1B.2,1C.2,3D.3,4
104B2(28).在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top为栈顶指针,则当做出栈处理时,top变化为(C)。
A.top不变B.top=0C.top--D.top++
104D3(29).向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行(B)。
A.hs->
next=s;
B.s->
next=hs;
hs=s;
C.s->
next=hs->
hs->
D.s->
hs=hs->
105A1(30).在队列中,下列说法正确的是(A)。
A.每次插入总是在队尾,每次删除总是在队头。
B.每次插入总是在队尾,每次删除也总是在队尾。
C.每次插入总是在队头,每次删除也总是在队头。
D.每次插入总是在队头,每次删除总是在队尾。
105D3(31).在带头结点的链队列q中,用q.front表示队头指针,q.rear表示队尾指针,结点结构为datanext,删除链队列的队头结点的主要语句为(B)。
A.s=q.front;
q.front->
next=s.next;
B.s=q.front->
C.s=q.front->
q.front=s.next;
D.s=q;
106C3(32).循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则队列满的条件为(D)。
A.sq.front=sq.rearB.sq.front=sq.rear+1C.(sq.front+1)modMAXSIZE=sq.rear
D.(sq.rear+1)modMAXSIZE=sq.front
106C2(33).循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则在队列未满时元素x入队列的主要操作为(A)。
A.sq.rear=(sq.rear+1)modMAXSIZE;
sq.elem[sq.rear]=x;
B.sq.elem[sq.rear]=x;
sq.rear=(sq.rear+1)modMAXSIZE;
C.sq.front=(sq.front+1)modMAXSIZE;
sq.elem[sq.front]=x;
D.sq.elem[sq.front]=x;
sq.front=sq.front+1;
106B2(34).循环队列sq中,用数组elem[0‥25]存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,设当前sq.front为20,sq.rear为12,则当前队列中的元素个数为(D)。
A.8B.16C.17D.18
106B2(35).设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。
如果队列中元素的个数为11,front的值为25,则rear应指向(B)元素。
A.Q[4]B.Q[5]C.Q[14]D.Q[15]
105A1(36).队列操作的原则是(A)。
A.先进先出B.后进先出C.只能进行插入D.只能进行删除
105B2(37).一个队列的入列序列是1234,则队列的输出序列是(B)。
A.4321B.1234C.1432D.3241
108C2(38).设6行8列的二维数组A6×
8=(aij)按行优先顺序存储,若第一个元素的存储位置为200,且每个元素占3个存储单元,则元素a54的存储位置为(B)。
A.308B.305C.266D.269
109C2(39).设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为(B)。
A.13B.33C.18D.40
108A1(40).设二个数组为A[0‥7]、B[-5‥2,3‥8],则这两个数组分别能存放的字符的最大个数是(C)。
A.7和35B.1和5C.8和48D.1和6
108C3(41).二维数组M[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到4,列下列j的范围从0到5。
M按行存储时元素M[3,5]的起始地址与M按列存储时元素(B)的起始地址下同。
A.M[2,4]B.M[3,4]C.M[3,5]D.M[4,4]
108C2(42).设二维数组为M[0‥8,0‥10],每个元素占2L个存储单元,以行序为主序存储,第一个元素的存储位置为P。
存储位置为P+50L的元素为(A)。
A.M[2,3]B.M[2,2]C.M[3,3]D.M[3,4]
108C2(43).设二维数组A的维数界偶定义为[1‥8,0‥10],起始地址为LOC,每个元素占2L个存储单元,以行序为主序存储方式下,某数据元素的地址为LOC+50L,则在列序为主序存储方式下,该元素的存储地址为(D)。
A.LOC+28LB.LOC+36LC.LOC+50LD.LOC+52L
109B2(44).数组A[1‥40,1‥30]采用三元组表示,设数组元素与下标均为整型,则在非零元素个数小于(D)时,才能节省存储空间。
A.1200B.401C.399D.400
108A1(45).一维数组通常采用顺序存储结构,这是因为(C)。
A.一维数组是一种线性数据结构B.一维数组是一种动态数据结构
C.一旦建立了数组,则数组中的数据元素之间的关系不再变动D.一维数组只能采用顺序存储结构
109A1(46).对稀疏矩阵进行压缩存储的目的是(B)。
A.方便存储B.节省存储空间C.方便运算D.节省运算时间
108D3(47).设二维数组a[0‥5,0‥6]按行存储,每个元素占d个存储单元,如果每个元素改为2d个存储单元,起始地址不变,则元素a[2,6]的存储地址将要增加(A)个存储单元。
A.20dB.21dC.38dD.39d
108B2(48).一维数组与线性表的区别是(A)。
A.前者长度固定,后者长度可变B.后者长度固定,前者长度可变
C.两者长度均固定D.两者长度均可变
107A1(49).下列关于串的叙述中,不正确的是(B)。
A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算
D.串既可以采用顺序存储,也可以采用链式存储
107B2(50).以下论断正确的是(A)。
A.“”是空串,“”是空白串B.“BEIJING”是“BEIJING”的子串
C.“something”<
“Somethig”D.”BIT”=”BITE”
107B2(51).字符串“VARTYPEunsignedint”若采用动态分配的顺序存储方法需要(C)个字节(假设每种数据均占用2个字节)。
A.38B.动态产生,视情况而定C.40D.42
111A1(52).由3个结点可以构造出(A)种不同形态的有向树。
A.2B.3C.4D.5
111A1(53).下列树的度为(B)。
A.2B.3C.5
D.8
112C2(54).含10个结点的二叉树中,度为0的结点有4个,则度为2的结点有(A)个。
A.3B.4C.5D.6
111B2(55).对一棵有100个结点的完全二叉树按层编号,则编号为49的结点,它的左孩子的编号为(A)。
A.98B.99C.97D.50
112B2(56).一棵深度为8(根的层次号为1)的满二叉树有(B)个结点。
A.256B.255C.128D.127
112C3(57).设二叉树根结点的层数为1,若一棵高(深)度为h的二叉树只有度为0与度为2的结点,则其结点数至少为(B)。
A.hB.2h-1C.2hD.2h+1
112C2(58).对下列二叉树进行先根次序遍历,所得次序为(A)。
A.ABCDEFB.ADCBFEC.BCDAFED.DCBFEA
112D3(59).一棵二叉树的前(先)序序列为ABCDEFG,则它的中序序列不可能为(C)。
A.CBDAFEGB.DCBAEFGC.CDBAGEFD.BDCAFGE
112A1(60).若先序遍历二叉树的结果为结点序列A,B,C,则有(C)棵不同的二叉树可以得到这一结果。
A.3B.4C.5D.6
111B2(61).具有n个结点的二叉树,有(B)条边。
A.nB.n-1C.n+1D.2n
112C2(62).在具有n个结点的二叉树的二叉链表表示中,2n个孩子指针域中,只用到(B)个域。
A.nB.n-1C.n+1D.2n
114B2(63).对哈夫曼树,下列说法错误的是(B)。
A.哈夫曼树是一类带树路径长度最短的树。
B.给出一组数,构造的哈夫曼树唯一。
C.给出一组数,构造的哈夫曼树的带树路径长度不变。
D.哈夫曼树的带权路径长度为每个叶子的路径长度与该叶子权值乘积之和。
111D3(64).假定在一棵二叉树中,双分支结点数为15个,单分支结点数为30个,则叶子结点数为(B)。
A.15B.16C.17D.47
113C3(65).假定一棵三叉树的结点数为50,则它的最小高度为(C)。
114B2(66).由带权为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为(D)。
A.23B.37C.46D.44
112C2(67).二叉树的先序遍历为EFHIGJK,中序遍历为HFIEJKG,则该二叉树根的右子树的根是(C)。
A.EB.FC.GD.H
111A1(68).在完全二叉树中,若一个结点是叶结点,则它没有(C)。
A.左孩子结点B.右孩子结点C.左孩子和右孩子结点D.左孩子结点,右孩子结点和兄弟结点
113B2(69).(B)二叉树,可以唯一地转化成一棵一般树。
A.根结点无左孩子B.根结点无右孩子C.根据结点有两个孩子D.没有一棵
111C2(70).具有65个结点的完全二叉树其深度为(B)。
A.8B.7C.6D.5
112C2(71).某二叉树的先序序列和后序序列正好相反,则该二叉树一定是(B)的二叉树。
A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子
113A1(72).下面叙述中,不正确的是(C)。
A.线性表中除第一个元素和最后一个元素外,其他每个元素都有且仅有一个直接前驱和一个直接后继
B.树中有且仅有一个结点没有前驱
C.环形队列中任何一个元素都有且仅有一个直接前驱和一个直接后继
D.在树中,一个结点可以有多个直接后继
114B2(73).有m个叶子结点的哈夫曼树,其结点总数是(C)。
A.2mB.2m+1C.2m-1D.2(m+1)
115A1(74).设图的邻接矩阵为
,则该图有(A)个顶点。
A.3B.4C.6D.9
115B2(75).设图的邻接矩阵为
,则该图为(A)。
A.有向图B.无向图C.强连通图D.完全图
115B2(76).设图的邻接链表如下图所示,则该图有(B)条边。
1V1234^
2V2134^
3V312^
4V412^
A.4B.5C.10D.20
115C2(77).设有6个结点的无向图,该图至少应有(B)条边才能确保是一个连通图。
A.5B.6C.7D.8
116D3(78).已知一有向图的邻接表存储结构如下,则根据有向图的深度优先遍历算法,从顶点V1出发,不能得到的顶点序列是(C)。
1324^
2^
345^
4^
524^
A.V1V2V3V5V4B.V1V3V4V5V2C.V1V2V4V5V3D.V1V4V3V5V2
119C3(79).下列图的深度优先遍历序列为(B)。
A
BC
DEFG
H
A.ABCDEFGHB.ABDHECFGC.ABEDHCFGD.ABCFGEDH
115B1(80).对一个具有n个顶点的图,采用邻接矩阵表示则该矩阵的大小为(D)。
A.nB.(n-1)2C.(n+1)2D.n2
118B2(81).对含n个记录的顺序表进行顺序查找,在最坏情况下需要比较(B)次。
A.n-1B.nC.(n+1)/2D.n(n-1)/2
118B2(82).对含n个记录的有序表进行折半查找,设每个记录的查找概率相等,则平均查找长度的数量级为(C)。
A.O(n)B.O(n2)C.O(
)D.O
(1)
119B2(83).有一棵二叉树如下图,该树是(B)。
50
2095
103055
70
85
A.二叉平衡树B.二叉排序树C.堆的形状D.以上都不是
119C3(84).已知10个数据元素(50,30,15,35,70,65,95,60,25,40),按照依次插入结点的方法生成一棵二叉排序树后,在查找成功的情况下,查找每个元素的平均比较次数(又称平均查找长度)为(C)。
A.2.5B.3.2C.2.9D.2.7
118C3(85).在顺序存储的线性表R[0‥29]上进行分块查找(设分为5块)的平均查找长度为(D)。
A.6B.11C.5D.6.5
120D3(86).已知一个线性表(38,25,74,63,52,48),假定采用h(k)=k%7计算散列地址进行散列存储,若引用线性探测的开放定地址法解决冲突,则在该散列表上进行查找的平均查找长度为(C)。
A.1.5B.1.7C.2D.2.3
119A1(87).在一个3阶的B-树上,每个结点包含的子树相同,最多为(C)。
A.1B.2C.3D.4
120B2(88).设散列地址空间为0~m-1,k为关键字,用P去除k,将余数作为k的散列地址,即:
h(k)=k%P,为了减少发生冲突的可能性,一般取P为(B)。
A.小于m的最大奇数B.小于m的最大素数C.小于m的最大偶数D.小于m的最大合数
120C3(89).设散列表表长m=14,散列函数为h(k)=k%11,表中已有4个记录,如果用二次探测再散列处理冲突,关键字为49的记录的存储地址是(D)。
012345678910111213
15386184
A.8B.3C.5D.9
119C3(90).已知8个