《数据结构》精选习题集粹1211.docx
- 文档编号:6727481
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:32
- 大小:372.59KB
《数据结构》精选习题集粹1211.docx
《《数据结构》精选习题集粹1211.docx》由会员分享,可在线阅读,更多相关《《数据结构》精选习题集粹1211.docx(32页珍藏版)》请在冰豆网上搜索。
《数据结构》精选习题集粹1211
《数据结构》精选习题集粹
参考书目:
[1]全国计算机技术与软件专业技术资格(水平)考试2004-2007试题分析与解答
清华大学出版社
[2]梁作娟等编著,数据结构习题解答与考试指导,清华大学出版社
第1章绪论
判断:
(中科院1999)
顺序存储方式只能用于存储线性结构。
顺序查找法适用于存储结构为顺序或链接存储的线性表。
-错
-对
填空:
(中科院1999)
对于给定的n个元素,可以构造出的逻辑结构有()、()、()、()四种。
-集合
-线性结构
-树形结构
-图结构
选择:
(中科院2001)
计算机算法必须具备输入、输出、()等5个特性。
A.可行性、可移植性和可扩展性B.可行性、确定性和有穷性
C.确定性、有穷性和稳定性D.易读性、安全性和稳定性
-B
问答:
(北京科技大学2002)
数据的逻辑结构在计算机存储中的映像(或表示)通常有几种方法?
-顺序映像和非顺序映像
线性结构和树性结构的特点分别是什么?
-结构中的数据元素之间存在一个对一个的关系
-结构中的数据元素之间存在一个对多个的关系
选择:
(武汉理工2002)
算法在发生非法操作时可以作出处理的特性称为()
A.正确性B.易读性C.健壮性D.可靠性
-C
简答:
(武汉理工2002)
简述顺序存储结构与链式存储结构在表示数据元素之间关系上的只要区别。
-用物理位置相邻表示逻辑关系上的相邻
-用结点中的指针指示关系
简答:
(南京理工2002)
简述算法的5个特性。
-教材中的简述即可
选择:
(南京理工2002)
数据结构是一门研究非数值计算的程序设计问题中计算机的()以及它们之间的()和运算的学科。
A.操作对象B.计算方法C.逻辑存储D.数据映像
A.结构B.关系C.运算D.算法
-A
-B
在数据结构中,逻辑上数据结构可分为:
()
A.动态结构和静态结构B.线性结构和非线性结构
C.紧凑结构和非紧凑结构D.内部结构和外部结构
-B
名词解释:
(武汉大学2002)
数据对象物理结构空间复杂度
选择:
(2005程序员)
数据结构主要研究数据的__________
A.逻辑结构B.存储结构
C.逻辑结构和存储结构D.逻辑结构和存储结构及其运算的实现
-D
选择;(2004程序员)
为了描述n个人之间的同学关系,可用__________结构表示
A.线性表B.树C.图D.队列
-B
选择:
(2004软件设计师)
下面的程序段违反了算法的__________原则
voidsam()
{intn=2;
while(!
odd(n))n+=2;
printf(n);
}
A.有穷性B.确定性C.可行性D.健壮性
-A
选择:
(软件设计师2007.11)
关于算法与数据结构的关系,__________是正确的。
A.算法的实现依赖于数据结构的设计
B.算法的效率与数据结构无关
C.数据结构越复杂,算法的效率越高
D.数据结构越简单,算法的效率越高
-A
第2章线性表
选择:
(清华大学1998)
线性表是具有n个()的有限序列
A.表元素B.字符C.数据元素D.数据项E.信息项
-C
选择:
(中国科技大学1998)
将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()
A.nB.2n-1C.2nD.n-1
-A
问答:
(北京航空1998)
在非空双向循环表中q所指的结点后面插入p所指的结点的过程已经依次进行了3步:
p->llink:
=q;p->rlink:
=q->rlink;q->rlink:
=p;第4步应是什么动作?
-q->rlink.llink:
=p
问答:
(北京航空1998)
若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?
为什么?
-链式存储结构
算法:
(北京工业大学1998)
写出在双向链表da中的插入操作算法,算法中插入位置的获取可以直接引用getnodep(da,I),其中参数da为双向链表,i是要插入的数据,要求算法中含有双向链表da的结点结构描述。
简答:
(北京科技大学2002)
设单链表中结点的数据域为data,指针域为next,指针p为表中某一结点的地址,请写出在p结点之前插入一个s结点的C语言描述语句。
-s->.next:
=p
算法:
(北京科技大学2002)
设有两个带头结点的单链表A和B,链表中结点的数据域为data(整型),指针域为next。
请用C语言函数形式写出将表A和B合并为一个单链表L的算法Union(A,B,L)(注:
若表A和B中有数据值相同的结点,只保留其中一个)
选择:
(武汉理工2002)
指针P所指的元素是双向循环链表L的尾元素的条件是()
A.P=LB.P=NULLC.P->Link=LD.P->Rlink=L
-D
判断:
(武汉理工2002)
一个循环链表可以由所给定的头指针或者尾指针惟一地确定。
-对
算法:
(武汉理工2002)
写一个算法,建立双向循环链表
简答:
(南京理工2002)
写出在双向链表指针P之后插入结点S的操作序列
-s->right=p->right;if(p->right)p->right->left=s;s->left=p;p->right=s
选择:
(南京理工2002)
在一个单链表中,若删除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;
-A
选择:
(软件设计师2005.5)
循环链表的主要优点是__________
A.不再需要头指针了
B.已知某个结点的位置后,能很容易找到它的直接前驱结点
C.在进行删除操作后,能保证链表不断开
D.从表中任一结点出发都能遍历整个链表
-D
选择:
(软件设计师2006.5)
给定一个有n个元素的有序线性表。
若采用顺序存储结构,则在等概率前提下,删除其中一个元素平均需要移动__________个元素。
A.(n+1)/2B.n/2C.(n-1)/2D.1
-C
选择:
(软件设计师2006.11)
某双向链表中的结点如下图所示,删除t所指结点的操作为__________。
A.t->prior->next=t->next;t->next->prior=t->prior;
B.t->prior->prior=t->prior;t->next->next=t->next;
C.t->prior->next=t->prior;t->next->prior=t->next;
D.t->prior->prior=t->next;t->next->prior=t->prior;
-A
选择:
(软件设计师2007.11)
对于n(n≥0)个元素构成的线性序列L,在________时适合采用链式存储结构。
A.需要频繁修改L中元素的值
B.需要频繁地对L进行随机查找
C.需要频繁地对L进行删除和插入操作
D.要求L存储密度高
-C
第3章栈和队列
选择:
(程序员2005)
PUSH和POP命令常用于()操作
A.队列B.数组C.栈D.记录
-C
选择:
(程序员2004)
判断一个表达式中左右括号是否匹配,采用()实现较为方便
A.线性表的顺序存储B.队列C.线性表的链式存储D.栈
-D
选择:
(清华大学1998)
用单链表表示的链式队列的对头在链表的()位置
A.链头B.链尾C.链中
-A
判断:
(中科院1999)
栈和队列都是限制取点的线性结构
-正确
判断:
(中国科技大学1998)
消除递归不一定需要使用栈
-正确
判断:
(清华大学2002)
栈、先进先出队列、优先级队列、双端队列等都可以看作是一个容器类的派生类。
该容器代表限制存取位置的顺序存取结构。
-正确
算法:
(中科院2000)
设顺序栈S中有2n个元素,从栈顶到栈底的元素依次是a2n,a2n-1,。
。
。
,a2,a1,要求通过一个辅助的循环队列及相应的入栈、出栈、入队、出队操作来重新排列栈中元素,使得从栈顶到栈底的元素依次是a2n,a2n-2,。
。
。
,a4,a2,a2n-1,a2n-3,。
。
。
,a3,a1,请写出一算法实现该操作,要求附加的空间是O(n),时间复杂度为O(n)。
选择:
(中科院2000)
设栈的输入序列是1,2,3,4,则()不可能是其出栈序列
A.1,2,4,3B.2,1,3,4C.1,4,3,2D.4,3,1,2E.3,2,1,4
-D
简答:
(武汉理工2002)
A、B、C三个元素进栈S的次序是A、B、C,利用Push(S,X),Pop(S)表示入栈、出栈操作,写出所有可能的出栈序列和获得每个序列的相应操作,并指明哪个序列不会是出栈序列。
-CBABCAACBABCBAC
-CAB
简答:
(南京理工2002)
在操作序列push
(1),push
(2),pop,push(5),push(7),pop,push(6)之后,栈顶元素和栈底元素分别是什么?
-6
-1
简答:
(南京理工2002)
在操作序列Qinsert
(1),Qinsert
(2),Qdelete,Qinsert(5),Qinsert(7),Qdelete,Qinsert(9)之后,队头元素和队尾元素分别是什么?
-5
-9
选择;(南京理工2002)
循环队列A[0..m-1]存放其元素,用front和rear分别表示队头和队尾,则循环队列满的条件是()
A.(Q.rear+1)%m==Q.frontB.Q.rear==Q.front+1
C.Q.rear+1==Q.frontD.Q.rear==Q.front
-A
选择:
一般情况下,将递归算法转换成等价的非递归算法应该设置()
A.堆栈B.队列C.堆栈和队列D.数组
-A
选择:
(软件设计师2004.5)
若循环队列以数组Q[O..m-1]作为其存储结构,变量rear表示循环队列中队尾元素的实际位置,其移动按rear=(rear+1)modm进行,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是__________
A.rear-length
B.(rear-length+m)modm
C.(1+rear+m-length)modm
D.m-length
-C
选择:
(软件设计师2007.5)
输入受限的双端队列是指元素只能从队列的一端输入、但可以从队列的两端输出,如下图所示。
若有8、1、4、2依次进入输入受限的双端队列,则得不到输出序列__________
输入受限的双端队列
A.2、8、1、4
B.1、4、8、2
C.4、2、1、8
D.2、1、4、8
-D
选择:
(软件设计师2007.11)
设栈S和队列Q的初始状态为空,元素按照a、b、c、d、e的次序进入栈S,当一个元素从栈中出来后立即进入队列Q。
若队列的输出元素序列是c、d、b、a、e,则元素的出栈顺序是__________,栈S的容量至少为__________。
A.a、b、c、d、eB.e、d、c、b、a
C.c、d、b、a、eD.e、a、b、d、c
A.2B.3C.4D.5
-C
-B
第4章串
选择:
(程序员2004)
字符串是一种线性表,其特殊性表现在()
A.它的数据元素是一个字符B.它可以链式存储
C.它可以顺序存储D.它的数据元素可以是多个字符
-A
简答:
(清华大学1998)
设目标为S=“abcaabbcaaabababaabca”,模式为P=“babab”,
(1)手工计算P的nextval值;
(2)写出利用求得的nextval数组,按KMP算法对目标S进行模式匹配的过程。
算法:
(东北大学1998)
已知3个字符串分别为S=’ab…abcaabcbca…a’,S1=’caab’,S2=’bcb’,利用所学字符串基本运算的函数得到结果串为:
S3=’caabcbca….aca…a’。
要求写出得到上述结果串S所用的函数及执行算法。
-算法核心部分:
i1=index(s,s1,1);
i2=index(s,s2,1)+3;
t1=substring(s,i1,strlength(s)-i1+1);
t2=substring(s,i2,strlenght(s)-i2+1);
t3=concat(t1,t2);
设有两个串p和q,求q在p中首次出现的位置的运算称作()
A.连接B.模式匹配C.求子串D.求串长
-B
设s1=‘ABCDEFG’,s2=‘PQRST’,con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是()
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
-D
已知a=‘this’,b=‘’,c=‘good’,d=‘ne’,f=‘asample’,g=‘is’
s=concat(a,concat(substr(f,2,7),concat(b,substr(a,3,2))))
t=replace(f,substr(f,3,6),c)
u=concat(substr(c,3,1),d)
v=concat(s,concat(b,concat(t,concat(b,u))))
试问:
s,t,u,v,length(s),index(v,g),index(u,g)各是什么?
-
s=‘thissampleis’
t=‘agoodone’
u=‘one’
v=‘thissampleisagoodone’
length(s)=14
index(v,g)=3
index(u,g)=0
第5章数组和广义表
选择:
(程序员2005)
设数组a[1..10,5..15]的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](1≤i≤10,5≤j≤15)的地址计算公式为()
A.a-204+2i+jB.a-204+40i+4jC.a-84+i+jD.a-64+44i+4j
-D
选择:
(程序员2004)
对于二维数组A[1..4,3..6],设每个元素占两个存储单元,若分别以行和列为主序存储,则元素A[3,4]相对于数组空间起始地址的偏移量分别是()和()
A.12B.14C.16D.18
-D
-A
选择:
(软件设计师2004)
若广义表L=((1,2,3)),则L的长度和深度分别是()
A.1和1B.1和2C.1和3D.2和2
-B
填空:
(中国科技大学1998)
设广义表L=((),()),则Head(L)=();Tail(L)=();L的长度是();L的深度是()
-Head(L)=();
-Tail(L)=(());
-2
-2
选择:
(北京邮电1998)
已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项t的运算是()
A.head(tail(tail(L)))B.tail(head(head(tail(L))))
C.head(tail(head(tail(L))))D.head(tail(head(tail(tail(L)))))
-D
选择:
(北京邮电1998)
将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,A中元素A66,65(即元素下标)在B中的位置K为()
A.198B.195C.197
-B
选择:
(武汉理工2002)
三对角线矩阵A[1..n][1..n]以行序为主顺序存储,其存储始址是B,每个元素占一个存储单元,则元素A[i][j]的存储起始地址为()(1≤i,j≤n)
A.b+2*j+i-2B.b+2*i+j-2C.b+2*j+i-3D.b+2*i+j-3
-D
选择:
(中科院2001)
设字符串S满足concat(head(S),head(tail(tail(S))))=”ac”,则S=()
A.”aabc”B.”acbc”C.”accc”D.”acac”
选择:
(软件设计师2006.11)
对于二维数组a[0…4,1…5],设每个元素占1个存储单元,且以列为主序存储,则元素a[2,2],相对于数组空间起始地址的偏移量是__________
A.5B.7C.10D.15
-B
第6章树和二叉树
1.选择:
(程序员2004)
在一颗非空二叉树中,叶子节点的总数比度为2的节点总数多()个
A.-1B.0C.1D.2
-C
2.选择:
(软件设计师2004)
在一棵完全二叉树中,其根的序号为1,()可判定序号为p和q的两个结点是否在同一层。
A.│log2p」=│log2q」B.log2p=log2q
C.│log2p」+1=│log2q」D.│log2p」=│log2q」+1
-A
3.选择:
(程序员2005)
如果根的层次为1,具有61个结点的完全二叉树的高度为()
A.5B.6C.7D.8
-B
4.选择:
(软件设计师2005)
若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为()
A.DEBAFCB.DEFBCAC.DEBCFAD.DEBFCA
-D
5.选择:
(软件设计师2005)
由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()
A.23B.37C.44D.46
-C
6.简答:
(清华大学1998)
假设先根次序遍历某棵树的结点次序为SACEFBDGHIJK,后根次序遍历该树的结点次序为CFEABHGIKJDS,要求画出这棵树。
7.选择:
(中科院1999)
()的遍历仍需要栈的支持
A.前序线索树B.中序线索树C.后序线索树
-C
8.选择:
(中国科技大学1999)(南京理工2002)
对于前序遍历和中序遍历结果相同的二叉树为();对于前序遍历和后序遍历结果相同的二叉树为()。
A.一般二叉树B.只有根结点的二叉树
C.根结点无左孩子的二叉树D.根结点无右孩子的二叉树
E.所有的结点只有左孩子的二叉树F.所有结点只有右孩子的二叉树
-F
-B
9.选择:
(华北计算技术研究所2001)
将一棵树转化为二叉树后,根结点()左子树
A.有B.没有
-A
选择:
(华北计算技术研究所2001)
10.哈夫曼树是带权路径长度最短的树,路径上长度()结点离根()
A.较大B.较小C.较近D.较远
-B
-D
11.简答:
(中国人民大学2002)
简述二叉哈夫曼树的建树方法
12.简答:
(北京科技大学2002)
设记录的关键字(key)集合K={26,36,41,44,15,68,12,6,51,25},以K为权值集合,构建一棵哈夫曼树,依次取K中各值,构建一棵二叉排序树
13.判定:
(武汉理工2002)
高度为K的二叉树至多有2k-1(k≥1)个结点
-错误
判定:
(武汉理工2002)
Huffman树、平衡二叉树都是数据的逻辑结构
-正确
简答:
(南京理工2002)
写出表达式a*(b+c)-d/e*f的后缀表达式
-abc+*de/f*-
简答:
(南京理工2002)
画出有三个结点的所有二叉树
选择:
(南京理工2002)
在线索化二叉树中,结点t没有左子树的充要条件是()
A.t->lchild=nullB.t->ltag=1
C.t->ltag=1且t->lchild=nullD以上都不对
-B.
选择:
(软件设计师2004.5)
若一棵哈夫曼(Huffman)树共有9个顶点,则其叶子结点的个数为__________
A.4 B.5 C.6 D.7
-B
选择:
(软件设计师2004.5)
设结点x和y是二叉树中任意的两个结点,在该二叉树的先根遍历序列中x在y之前,而后根遍历序列中x在y之后,则x和y的关系是__________。
A.x是y的左兄弟
B.x是y的右兄弟
C.x是y的祖先
D.x是y的后裔
-C
选择:
(软件设计师2005.11)
已知某二叉树的中序、层序序列分别为DBAFCE、FDEBCA,则该二叉树的后序序列为__________。
A.BCDEAF
B.ABDCEF
C.DBACEF
D.DABECF
-B
选择:
(软件设计师2005.11)
在二叉树的顺序存储中,每个结点的存储位置与其父结点、左右子树结点的位置都存在一个简单的映射关系,因此可与三叉链表对应。
若某二叉树共有n个结点,采用三叉链表存储时,每个结点的数据域需要d个字节,每个指针域占用4个字节,若采用顺序存储,则最后一个结点下标为k(起始下标为1),那么__________时采用顺序存储更节省空间。
A.d<12n/(k-n)
B.d>12n/(k-n)
C.d<12n/(k+n)
D.d>12n/(k+n)
-A
选择:
(软件设计师2006.5)
为便于存储和处理一般树结构形式的信息,常采用孩子-兄弟表示法将其转换成二叉树(左子关系表示父子、右子关系表示兄弟),与下图所示的树对应的二叉树是__________。
-A
选择:
(软件设计师2007.5)
已知某二叉树的中序序列为CBDAEFI、先序序列为ABCDEFI,则该二叉树的高度为__________
A.2B.3C.4D.5
-C
选择:
(软件设计师2007.5)
由权值为29、12、15、6、23的五个叶子结点构造的哈夫曼树为(64),其带权路径长度为(65)
(64)
(65)A.85B.188C.192D.222
-A
-B
选择:
(软件设计师2007.11)
对于二叉查找树(BinarySearchTree),若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉查找树。
因此,对任意一棵二叉查找树进行__________遍历可以得到一个结点元素的递增序列。
在具有n个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为__________。
A.先序B.中序C.后序D.层序
A.O(n2)B.O(nlog2n)C.O(log2n)D.O(n)
-B
-C
第7章图
选择:
(程序员2004)
采用邻接表表示一有向图,若图中某顶点的入度和出度分别为d1和d2,则该顶点对应的单链表的结点数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 精选 习题集 1211
![提示](https://static.bdocx.com/images/bang_tan.gif)