2019年数据结构习题集.pdf
《2019年数据结构习题集.pdf》由会员分享,可在线阅读,更多相关《2019年数据结构习题集.pdf(148页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、清华数据结构习题集答案(C语言版严蔚敏)第1章 绪 论1.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据对象是性质相同的数据元素的集合,是数据的一个子集。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。存储结构是数据结构在计算机中的表示。数据类型是一个值的集合和定义在这个值集上的一组操作的总称。抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对般数据类型的扩
2、展。1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。1.3 设有数据结构(D,R),其中试按图论中图的画法惯例画出其逻辑结构图。1.4 试仿照三元组的抽
3、象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。解:A D T C o m p l e x 数据对象:D=r,i|r,i为实数数据关系:R=r,i 基本操作:I n i tC o m p l e x(&C,r e,i m)操作结果:构造一个复数C,其实部和虚部分别为r e和i mD e s tr o y C m o p 1 e x(&C)操作结果:销毁复数CG e t(C,k,&e)操作结果:用e返回复数C的第k元的值P u t(&C,k,e)操作结果:改变复数C的第k元的值为。I s A s c e n d i n g(C)1操作结果:如
4、果复数C的两个元素按升序排列,则返回1,否则返回0I s D e s c e n d i n g(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0M a x (C,&e)操作结果:用。返回复数C的两个元素中值较大的一个M i n(C,&e)操作结果:用。返回复数C的两个元素中值较小的一个 A D T C o m p l e xA D T R a ti o n a l N u m b e r 数据对象:D=s,m|s,m为自然数,且m不为0 数据关系:R=)基本操作:Ini tRai ionalN umber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和mD
5、 estroy RationalN umber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值P ut(&R,k,e)操作结果:改变有理数R的第k元的值为eIsA scending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsD escending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0M ax (R,&e)操作结果:用。返回有理数R的两个元素中值较大的一个M in(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个 A D T RationalN umber1.5试画出与下列程序段等价的
6、框图。(1)product=l;i=l;w hile(i=n)product*=i;i+;)(2)i=0;do i+;w hile(i!=n)&(a i!=x);(3)sw itch case x y:z=y-x;break;case x=y:z=abs(x*y);break;default:z=(x-y)/abs(x)*abs(y);21.6在程序设计中,常用下列三种不同的出错处理方式:(1)用 ex it语句终止执行并报告错误;(2)以函数的返回值区别正确返回或错误返回;(3)设置一个整型变量的函数参数以区别正确返回或某种错误返回。试讨论这三种方法各自的优缺点。解:(l)ex it常用于异
7、常错误处理,它可以强行中断程序的执行,返回操作系统。(2)以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。(3)用整型函数进行错误处理的优点是可以给出错误类型,便于迅速确定错误。1.7 在程序设计中,可采用下列三种方法实现输出和输入:(1)通过scanf和 printf语句;(2)通过函数的参数显式传递;(3)通过全局变量隐式传递。试讨论这三种方法的优缺点。解:(1)用 scanf和 printf直接进行输入输出的好处是形象、直观,但缺点是需要对其进行格式控制,较为烦琐,如果出现错误,则会引起整个系统的崩溃。(2)通过函数的参数传递进行输入输出,便于实现信息的隐腋,减少出
8、错的可能。(3)通过全局变量的隐式传递进行输入输出最为方便,只需修改变量的值即可,但过多的全局变量使程序的维护较为困难。1.8 设 n 为正整数。试确定下列各程序段中前置以记号 的语句的频度:(1)i=l;k=0;w hile(i=n-l)k+=1 0*i;i+;(2)i=l;k=0;do(0 k+=1 0*i;i+;w hile(i=n-l);(3)i=l;k=0;w hile(i=n-l)i+:k+=1 0*i;(4)k=0;for(i=l;i=n;i+)for(j=i;j=n;j+)0 k+;(5)for(i=l;i=n;i+)for(j=l;j=i;j+)for(k=l;k=j;k+)
9、x +=delta;(6)i=l;j=0;3w hile(i+j j)j+;else i+;)(7)x=n;y=0;/n 是不小于1 的常数w hi le(x =(y+1)*(y+1)y+;)(8)x=91;y=1 0 0;w hile(y 0)if(x 1 0 0)x -=1 0;y 一;else x+;解:)(1)n-1n-l(4)n+(n-l)+(n-2)+.+1=l+(l+2)+(l+2+3)+.+(1+2+3+.+n)n=ya-+-i-)-/,=1 2=挣-1)=/2+T/+*乙/=!乙/=1 乙/=!乙i=-n(n+1)(2n+1)+n(n+1)=+1)(2n+3)(6)n(7)_
10、 V nJ 向下取整(8)1 1 0 01.9 假设n 为 2 的乘黑,并且n 2,试求下列算法的时间复杂度及变量c o u n t 的值(以n的函数形式表示)。i n t Ti m e(i n t n)c o u n t =0;x=2;w h i l e(x n/2)x *=2;c o u n t+;r e t u r n c o u n t;)解:438 时,n2 5 0/7 1 o g2 n1.1 4 判断下列各对函数/()和g(),当8时,哪个函数增长更快?(1)f(n)=1 0?2+l n(n!+l(y ),g(n)=2 n4+7(2)f(n)=(l n(n!)+5)2,g()=13
11、 n2 5(3)f(n)=n2 1+J/+1,g()=(l n(n!)2+n(4)/()=+(2n,g()=+n5解:g(n)快 g(n)快(3)f(n)快(4)f(n)快1.1 5试用数学归纳法证明:(1)+1)(2 +1)/6 (/?0)/=15(2)2=-1)/(X -1)(X W 1,2 0)/=0(3)2,M=2W-1(H1)i=l(4)Z -1)=2 (n 1)i=L 1 6试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值解:i n t m a x 3(i n t x,i n t y,i n t z)i f (x y)i f(x z)r e t u r n x;e l
12、s e r e t u r n z;e l s ei f(y z)r e t u r n y;e l s e r e t u r n z;1.1 7已知k阶斐波那契序列的定义为fo/)=0,fk_2=0,于 1=1;.力=力-1+力-2+/;i,n=k,k +L 试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。解:k 0为阶数,n为数列的第n项i n t Fi b o n a c c i(i n t k,i n t n)(i f(k l)e x i t(O V ER FL O W);i n t *p,x;p=n e w i n t k+l ;i f(!p
13、)e x i t(O V ER FL O W);i n t i,j;f o r(i=0;i k+l;i+)i f(i k-l)p i =0;e l s e p i =l;f o r(i=k+l;i n+l;i+)x=p 0;f o r(j=0;j k;j+)p j =p j+l ;p k =2*p k-l -x;)r e t u r n p k ;6L 1 8 假设有A,B,C,D,E 五个高等院校进行田径对抗赛,各院校的单项成绩均己存入计算机,并构成一张表,表中每一行的形式为|项 目 名 称|性别|校名|成绩|得分|编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。解:t
14、y p e d e f e n u m A,B,C,D,E Sc h o o l N a m e;t y p e d e f e n u m Fe m a l e,M a l e S e x T y p e;t y p e d e f s t r u c t c h a r e v e n t 3 ;项目S e x T y p e s e x;S c h o o l N a m e s c h o o l;i n t s c o r e;Co m p o n e n t;t y p e d e f s t r u c t i n t M a l e S u m;男团总分i n t Fe m a
15、 l e S u m;女团总分i n t T o t a l S u m;团体总分 S u m;S u m S u m S c o r e(S c h o o 1 N a m e s n,Co m p o n e n t a ,i n t n)(S u m t e m p;t e m p.M a l e S u m=0;t e m p.Fe m a l e S u m=O;t e m p.T o t a l S u m=0;i n t i;f o r(i=0;i a r r s i z e 或对某个左。人,使m a x i n t 时,应按出错处理。注意选择你认为较好的出错处理方法.解:#i
16、n c l u d e#i n c l u d e d e f i n e M AXIN T 6553 5S d e f i n e Ar r S i z e 100i n t f u n(i n t i);7i n t m a i n()i n t i,k;i n t a Ar r S i z e ;c o u t k;i f(k Ar r S i z e-l)e x i t(0);f o r(i=0;i M AXIN T)e x i t(O);e l s e a i =2*i*a i-l ;)f o r(i=0;i N f AXIN T)e x i t(O);e l s e c o u t
17、 a i ,z ;)r e t u r n 0;)1.20试编写算法求一元多项式的值(x)=Z qx的值乙(%),并确定算法中每一语句的执行次数三0和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本 题 的 输 入 为=0,1,),玉)和 ,输出为?(左0)。解:f t i n c l u d e#i n c l u d e d e f i n e N 10d o u b l e p o l y n o m a i l(i n t a ,i n t i,d o u b l e x,i n t n);i n t m a i n()d o u b l e x;i n t n,i;i n
18、 t a N ;。“”输入变量的值*:;c i n x;c o u t n;i f(n N l)e x i t (0);c o u t 输入多项式的系数a 0 a n :;f o r (i=0;i=n;i+)c i n a i ;8c o u t 0)r e t u r n a n-i +p o l y n o m a i l (a,i-1,x,n)*x;e l s e r e t u r n a n ;)本算法的时间复杂度为。(n)。第2章 线 性 表2.1描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。解:头指针是指向链表中第一个结点的指针。首元结点是指链表中存储第一个
19、数据元素的结点。头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。它可以对空表、非空表以及首元结点的操作进行统一处理。2.2填空题。解:(1)在顺序表中插入或删除一个元素,需要平均移动表史二主元素,具体移动的元素个数 与 懑在表中的位置Z关。(2)顺序表中逻辑上相邻的元素的物理位置 逛 紧邻。单链表中逻辑上相邻的元素的物理位的不一定紧邻。(3)在单链表中,除了首元结点外,任一结点的存储位中由其前驱结点的链域的值指 示。(4)在阜臃表中设置次线点的作箱是插入和删除首元结点时不用进行特殊处理.2.3在什么情况下用顺序表比链表好?解:
20、当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。2.4对以下单链表分别执行下列各程序段,并画出结果示意图。92.5 画出执行下列各行语句后各指针及链表的示意图。L=(L i n k L i s t)m a l l o c(s i z e o f(L N o d e);P=L;f o r(i=l;i n e x t=(L i n k L i s t)m a l l o c(s i z e o f(L N o d e);P=P-n e x t;P-d a t a=i*2-l;)P-n e x t=N U L L;f o r(i=4;i=l;i)In s
21、 _ L i n k L i s t(L,i+1,i*2);f o r(i=l;i p1-3-5 7 A丁p2 4 67 8八L-pL 2.6 已知L 是无表头结点的单链表,且 P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。a.在 P 结点后插入S 结点的语句序列是。b.在 P 结点前插入S 结点的语句序列是10c.在表首插入S结点的语句序列是。d.在表尾插入S 结点的语句序列是.(1)P-n e x t=S;(2)P-n e x t=P-n e x t-n e x t;(3)P-n e x t=S-n e x t;(4)S-n e x t=P-n e x t;
22、(5)S-n e x t=L;(6)S-n e x t=N U L L;(7)Q=P;(8)w h i l e(P-n e x t!=Q)P=P-n e x t;(9)w h i l e(P-n e x t!=N U L L)P=P-n e x t;(10)P=Q;(H)P=L;(L=S;(13)L=P:解:a.(4)(1)b.(7)(11)(8)(4)(1)c.(5)(12)d.(9)(1)(6)2.7 已知L是带表头结点的非空单链表,且 P 结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。a.删除P 结 点 的 直 接 后 继 结 点 的 语 句 序 列 是b.
23、删除P 结 点 的 直 接 前 驱 结 点 的 语 句 序 列 是。c.删除P 结点的语句序列是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。d.删除首元结点的语句序列是 0e.删除尾元结点的语句序列是。(1)P=P-n e x t;(2)P-n e x t=P;(3)P-n e x t=P-n e x t-n e x t;(4)P=P-n e x t-n e x t;(5)w h i l e(P!=N U L L)P=P-n e x t;(6)w h i l e(Q-n e x t!=N U L L)P=Q;Q=Q-n e x t;(7)w h i l e(P-
24、n e x t!=Q)P=P-n e x t;(8)w h i l e(P-n e x t-n e x t!=Q)P=P-n e x t;(9)w h i l e(P-n e x t-n e x t!=N U L L)P=P-n e x t;(10)Q=P;(11)Q=P-n e x t;(12)P=L;(13)L=L-n e x t;(14)f r e e (Q);解:a.(11)(3)(14)b.(10)(12)(8)(3)(14)c.(10)(12)(7)(3)(14)d.(12)(11)(3)(14)e.(9)(11)(3)(14)1 12.8 已知P 结点是某双向链表的中间结点,试从
25、下列提供的答案中选择合适的语句序列。a.在 P结点后插入S 结点的语句序列是 ob.在 P 结点前插入S 结点的语句序列是。c.删除P 结点的直接后继结点的语句序列是 od.删除P 结点的直接前驱结点的语句序列是 Oe.删除P 结点的语句序列是 o(1)P-n e x t=P-n e x t-n e x t;(2)P-p r i o u=P-p r i o u-p r i o u;(3)P-n e x t=S;(4)P-p r i o u=S;(5)S-n e x t=P;(6)S-p r i o u=P;(7)S-n e x t=P-n e x t;(8)S-p r i o u=P-p r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2019 数据结构 习题集
限制150内