数据结构期末习题答案.pdf
《数据结构期末习题答案.pdf》由会员分享,可在线阅读,更多相关《数据结构期末习题答案.pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章绪论一,选择题1 .组成数据的基本单位是()A.数据项 B.数据类型 C.数据元素 D.数据变量2 .数据结构是研究数据的()以及它们之间的相互关系。A.理想结构,物理结构 B.理想结构,抽象结构C.物理结构,逻辑结构 D.抽象结构,逻辑结构3 .算法分析的两个主要方面是()A.正确性和简单性 B.可读性和文档性C.数据复杂性和程序复杂性D.时间复杂度和空间复杂度4 .算法分析的目的是A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性5 .算法的时间复杂度取决于()A.问题的规模 B.待处理数据的初态 C.A和 B D.以上都不
2、是6.一个算法应该是()。A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和 C.7 .下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C.算法的可行性是指指令不能有二义性 D.以上几个都是错误的8 .从逻辑上可以把数据结构分为()两大类。A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构9 .程序段 f o r(i=n-l;i =l;i)f o r(j=l j A j+l )A j 与 A j+1 对换;其 中 n 为正整数,则最后一行的语句频度在最坏情况下是()A
3、.0 (n)B.O(nlogn)C.0(n3)D.0(n2)1 0 .连续存储设计时,存储单元的地址()。A.一 定 连 续 B.一 定 不 连 续 C.不 一 定 连 续 D.部分连续,部分不连续二,判断题1 .数据结构的抽象操作的定义与具体实现有关。()2 .数据结构是数据对象与对象中数据元素之间关系的集合。3 .在顺序存储结构中,有时也存储数据结构中元素之间的关系。()4 .数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用的需要建立的。5 .算法和程序原则上没有区别,在讨论数据结构是两者是通用的。6.同一数据逻辑结构中的所有数据元素都具有相同的特性是指数据元素所包含的数据项的个数
4、都相等。7 .数据的逻辑结构与数据元素本身的内容和形式无关。8 .算法的优劣与算法描述语言无关,但与所用计算机有关。()9.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。()1 0.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。()一,选择题1.C2.C3.D4.C5.C6.B7.D8.C9.D10.A二,判断题1.X2.V3.X4.V5.X6.X7.V8.X9.V10.X三,填空1.数据的物理结构包括的表示和的表示。2.对于给定的n 个元素,可以构造出的逻辑结构有,,四种。3.一个数据结构在计算机中称为存储结构。4.抽 象 数 据
5、类 型 的 定 义 仅 取 决 于 它 的 一 组,而与 无关,即不论其内部结构如何变化,只要它的 不变,都不影响其外部使用。5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。6.一个算法有5 个特性:、,有零个或多个输入、有一个或多个输出。7.已知如下程序段for(i=n;i=1 ;i+)语句 1(x:=x+l;语句 2for(j=n;j=i;j+)语句 3y:=y+l;语句 4语 句 1 执行的频度为;语句2 执行的频度为;语句3 执行的频度为;语句4 执行的频度为。8.在下面的程序段中,对 x 的 赋 值 语 句 的 频 度 为 (表示为n 的函数)
6、for(i=l;i =n;i+)fo r(j=1;j=i;j+)for(k=l;k=j;j+)x x+d e lta;9.计算机执行下面的语句时,语 句 s 的执行次数为 ofo r(i=l;i=i;j)10.下面程序段的时间复杂度为一。(nl)sum=l;for(i=0;sumn;i+)sum+=l;三,填空题1.数据元素数据元素间关系2.集 合 线 性 结 构 树 形 结 构 图 状 结 构 或 网 状 结 构3 .表示(又称映像)。4 .逻辑特性在计算机内部如何表示和实现数学特性5 .一对一 一对多6 .有穷性 确定性7 .n+1 n n(n+3)/2多对多可行性n(n+l)/28 .1
7、+(1+2+(1+2+3)+(1+2+n)=n(n+l)(n+2)/6 0(n3)9 .(n+3)(n-2)/21 0 .O(n)四,应用题1 .什么是数据?它与信息是什么关系?2.什么是数据结构?数据结构是研究什么内容的学科?有关数据结构的讨论涉及哪三方面?3 .评价一个好的算法,从哪几方面考虑?4 .若将数据结构定义为一个二 元 组(D,R),说明符号D,R应分别表示什么?5 .解释算法与程序的区别?6 .有下列几种用二元组表示的数据结构,画出它们分别对应的逻辑图形表示,并指出它们分别属于何种结构。(1)A=(K,R),其中:K=a,b,c,d,e,f,g R=r r=a,b),(b,c)
8、,(c,d),d,e),e,f,f,g)(2)B=(K,R),其中:K=a,b,c,d,e,f,g,h R=r r=(d,b),d,g),d,a),b,c),(g,e),g,h),(a,f)(3)C=(K,R),其中:K=1,2,3,4,5,6 R=r=(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)这里的圆括号对表示两结点是双向的。7.分析以下程序段的时间复杂度。(1)a=0;b=l;f o r (i=2:i=n:i+)s=a+b;b=a;a=S;)(2)in t i,j,k;f o r (i=0;in:i+f o r (j=0;j c iJ j
9、 J-O;f o r (k=0;k (n;k+)(4)c i U=c i U +a i k +b k U;)8.求下列算法段的语句频度及时间复杂度(1)f o r(i=l;i =n;i+)f o r(j =1;j =i ;j+)x=x+1;(2)f o r (i=l;i =n;i+)f o r (j=l;j =i;j+)f o r (k=l;k n e x t=h B.p-n e x t=NI L C.p-n e x t-n e x t=h D.p-d a t a=-l2.F 面关于线性表的叙述中,A.线性表采用顺序存储,B.线性表采用顺序存储,C.线性表采用链接存储,D.线性表采用链接存储,
10、3.线性表是具有n个()A.表元素 B.字符错误的是哪一个?()必须占用一片连续的存储单元。便于进行插入和删除操作。不必占用一片连续的存储单元。便于插入和删除操作。的有限序列(n 0)。C.数据元素 D.数据项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利 用()存储方式最节省时间。A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。A.单 链 表 B.仅有头指针的单循环链表C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作
11、是在末尾插入结点和删除尾结点,则选用()最节省时间。A.单链表 B.单循环链表 C.带尾指针的单循环链表 D.带头结点的双循环链表7.在带有头结点的单链中插入一个新结点时不可能修改A.头指针B.头 结 点 指 针 域 C.开始结点指针域 D.其它结点指针域8.双向链表中有两个指针域,H i n k 和 r l i n k,分别指向前驱及后继,设 p 指向链表中的一个结点,q指向一待插入结点,现要求在P 前插入q,则正确的插入为()A.p-l l i n k=q;q-r l i n k=p;p-11i n k-r 1i n k=q;q-H i n k=p-l l i n k;B.q-l l i
12、n k=p-11 i n k;p-l l i n k-r 1i n k=q;q-r 1i n k=p;p-l l i n k=q-r l i n k;C.q-r l i n k=p;p-r l i n k=q;p-l 1i n k-r l i n k=q;q-r l i n k=p;D.p-H i n k-r 1 i n k=q;q-r l i n k=p;q-H i n k=p-11 i n k;p-l l i n k=q;9.对于一个头指针为h e a d 的带头结点的单链表,判定该表为空表的条件是()。A.h e a d 二 二 NU L L B.h e a d-*n e x t=二 N
13、U L L C.h e a d f n e x t 二 二 h e a d D.h e a d!=NU L L10.在顺序表中查找第i 个元素的时间效率最高的算法时间复杂度是()。A.0(1)B.0()C.O(log2n)D.0(n)11.最好的情况下,在顺序表中按值查找一个元素的算法时间复杂度是()。A.0(n)B.0(G)C.O(log2n)D.0(1)12.若长度为n的线性表采用顺序存储结构,在其第i 个位置插入一个新元素的算法的时间复杂度为()(K=i l i n k=h e a d B.p-l i n k=NI L C.p=NI L D.p=h e a d一,选择1.A2.B3.C4
14、.A5.D6.D7.A8.D9.B10.A11.D12.C13.C14.C15.A二,判断1.链表中的头结点仅起到标识的作用。()2.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。()3.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。()4.顺序存储方式只能用于存储线性结构。()5.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。6.线性表的特点是每个元素都有一个前驱和一个后继。()7.取线性表的第i 个元素的时间同i 的大小有关。()8.循环链表不是线性表。()9.线性表就是顺序存储的表。()10.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
15、()二,判断1.X2.J3.X1.X5.X6.X7.X8.X9.X10.X三,填空1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用 存储结构。2.线 性 表 L=(al,a2,a n)用数组表示,假定删除表中任一元素的概率相同,则删除一个 元 素 平 均 需 要 移 动 元 素 的 个 数 是。3.在一个长度为n 的顺序表中第i 个 元 素(l=inext=p;s-prior=;p-prior=s;=s;7.顺序存储结构通过 表示元素之间的关系;链式存储结构通过 表示元素之间的关系。8.对于双向链表,在两个结点之间插入一个新结点需修改的指
16、针共 个,单链表为_个。9.已知指针p 指向单链表L 中的某结点,则删除其后继结点的语句是:时间复杂度是。10.带头结点的双循环链表L 中只有一个元素结点的条件是:。三,填空1 .顺 序2.(n-1)/23.n-i+l4.0(1),0(n)5.f-next=p-next;f-prior=p;p-next-prior=f;p-next=f;6.p-prior s-prior-next7.物 理 上 相 邻 指 针8.4 29.u=p-next;p-next=u-next;free(u);0(1);10.L-next-next=L四,算法设计1.试写一算法在带头结点的单链表结构上实现线性表操作LO
17、CATE(L,X)。2.试写一算法在带头结点的单链表结构上实现线性表操作LENGTH(L)。3.试写一算法实现顺序表的就地逆置,即利用原表的存储空间将线性表(a a2,逆置为(a”an-i,a4.试写一算法,对单链表实现就地逆置。5.设线性表A=(ai,a2.,an),B=(b|.b2.,bn).试写一个按下列规则合并A,B 为线性表C 的算法,即使得C=(ai,bam,bm,bm+1.,bn)I mn 时;线性表A,B 和 C 均以单链表作存储结构,且C 表利用A 表和B 表中的结点空间构成。注意:单链表的长度值m 和 n 均未显式存储。1.LNode*Locate(LinkList L,i
18、nt x)链表上的元素查找,返回指针(for(p=l-next;p&p-data!=x;p=p-next);return p;/Locate2.int Length(LinkList L)求链表的长度(for(k=0,p=L;p-next;p=p-next,k+);return k;/Length3.void reverse(SqList&A)顺序表的就地逆置(for(i=0,j=A.length-1;inext;q=p-next;s=q-next;p-next=NULL;while(s-next)(q-next=p;p=q;q=s;s=snext;把L 的元素逐个插入新表表头)q-next=
19、p;s-next=q;L-next=s;/LinkLi st_re verse分析:本算法的思想是,逐个地把L 的当前元素q 插入新的链表头部,p 为新表表头.5.void merge 1 (LinkList&A,LinkList&B,LinkList&C)把链表A 和 B 合并为C,A和 B 的元素间隔排列,且使用原存储空间(p=A-next;q=B-next;C=A;while(p&q)(s=p-next;pnext=q;将B 的元素插入if(s)t=q_next;q,next二 s;如A 非空,将 A 的元素插入p=s;q=t;/w h i l e/m e r g e 1第三章栈和队列一
20、,选择1.对于栈操作数据的原则是()。A.先进先出 B.后进先出 C.后进后出 D,不分顺序3.最大容量为n的循环队列,队尾指针是r e a r,队头是f r o n t,则 队 空 的 条 件 是()。A.(r e a r+1)M OD n=f r o n t B.r e a r=f r o n tC.r e a r+l=f r o n t D.(r e a r-1)M OD n=f r o n t4当利用大小为n的数组顺序存储 个栈时,假定用t o p=n 表示栈空,则向这个栈插入一个元素时首先应执行语句修改t o p 指针。A.t o p+B.t o p-C.t o p=0 D.t o
21、p5 .若已知一个栈的入栈序列是1,2,3,n,其输出序列为p i,p z,p:”,p”若 p、是 n,则p()。A.i B.n-i C.n-i+1 D.不确定6 .一个递归算法必须包括()。A.递归部分 B.终止条件和递归部分 C.迭代部分 D.终止条件和迭代部分7 .执行完下列语句段后,i 值为:()i n t f (i n t x)r e t u r n (x 0)?x*f(x-1):2);i n t i ;i =f(f );A.2 B.4 C.8 D.无限递归8.设栈S和队列Q的初始状态为空,元素e l,e 2,e 3,e 4,e 5 和 e 6依次通过栈S,一个元素出栈后即进队列Q,
22、若 6 个元素出队的序列是e 2,e 4,e 3,e 6,e 5,e l 贝 U 栈 S的容量至少应该是()oA.6 B.4 C.39.栈和队列的共同点是()。A.都是先进先出C.只允许在端点处插入和删除元素D.2B.都是先进后出D.没有共同点1 0 .设计一个判别表达式中左,右括号是否配对出现的算法,采 用()数据结构最佳。A.线性表的顺序存储结构 B.队列 C.线性表的链式存储结构 D.栈1 1 .用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()A.仅修改队头指针 B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修
23、改1 2 .递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。A.队列 B.多维数组 C.栈 D.线性表1 3 .假设以数组A m 存放循环队列的元素,其头尾指针分别为f r o n t和r e a r,则当前队列中的元素个数为()。A.(r e a r-f r o n t+m)%m B.r e a r-f r o n t+1 C.(f r o n t-r e a r+m)%m D.(r e a r-f r o n t)%m1 4 .循环队列存储在数组A 中,则入队时的操作为()0A.r e a r=r e a r+l B.r e a r=(r e a r+1)m o d
24、(m-1)C.r e a r=(r e a r+1)m o d m D.r e a r=(r e a r+1)m o d(m+1)1 5 .若用一个大小为6的数组来实现循环队列,且当前r e a r和f r o n t的值分别为。和3,当从队列中删除一个元素,再加入两个元素后,r e a r和f r o n t的值分别为多少?()A.1 和 5 B.2 和 4 C.4 和 2 D.5 和 1一,选择l.B3.B4 B5.D6.B7.B8.C9.C1 0.D1 1.D1 2.C1 3.A1 4.D1 5.B二,填空1._ _ _ _ _ _ _是限定仅在表尾进行插入或删除操作的线性表。3 .中缀
25、表达式3*(x+2)-5所对应的后缀表达式为;后缀表达式“4 5*3 2+-”的值为。4.顺序栈用d a t a 1.n 存储数据,栈顶指针是t o p,则值为x的 元 素 入 栈 的 操 作 是。5 .向一个循环队列中插入一元素时.,需首先移动,然后再向所指位置新插入的元素。6.用下标0开始的N元数组实现循环队列时,为实现卜标变量M加1后在数组有效卜标范围内循环,可采用的表达式是:M=7 .用长度为n的数组顺序存储一个栈时,若用t o p=n表示栈空,则表示栈满的条件为。二,填空1.栈3.3 x 2 +*5-1 54.d a t a +t o p =x;5 .队尾指针 写入6.(M+1)M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 习题 答案
限制150内