数据结构第二章习题答案.docx
- 文档编号:10922487
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:14
- 大小:21.82KB
数据结构第二章习题答案.docx
《数据结构第二章习题答案.docx》由会员分享,可在线阅读,更多相关《数据结构第二章习题答案.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构第二章习题答案
数据结构第二章习题答案
【篇一:
数据结构第二章练习参考答案】
pclass=txt>a.在p结点后插入s结点的语句序列是____4,1______________。
b.在p结点前插入s结点的语句序列是___711841_______________。
c.在表首插入s结点的语句序列是____512______________。
d.在表尾插入s结点的语句序列是_______916___________。
(1)p-next=s;
(2)p-next=p-next-next;
(3)p-next=s-next;
(4)s-next=p-next;
(5)s-next=l;
(6)s-next=null;
(7)q=p;
(8)while(p-next!
=q)p=p-next;
(9)while(p-next!
=null)p=p-next;
(10)p=q;
(11)p=l;
(12)l=s;
(13)l=p;
尾元结点,试从下列提供的答案中选择合适的语句序列。
a.删除p结点的直接后继结点的语句序列是__11,3,14__________________。
b.删除p结点的直接前驱结点的语句序列是_10,12,8,11,3,14___________________。
c.删除p结点的语句序列是_____10,12,7,3,14_______________。
d.删除首元结点的语句序列是__12,11,3,14__________________。
e.删除尾元结点的语句序列是____9,11,3,14________________。
(1)p=p-next;
(2)p-next=p;
(3)p-next=p-next-next;
(4)p=p-next-next;
(5)while(p!
=null)p=p-next;
(6)while(q-next!
=null){p=q;q=q-next;}
(7)while(p-next!
=q)p=p-next;
(8)while(p-next-next!
=q)p=p-next;
(9)while(p-next-next!
=null)p=p-next;
(10)q=p;
(11)q=p-next;
(12)p=l;
(13)l=l-next;
(14)free(q);
3.已知p结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
a.在p结点后插入s结点的语句序列是__7,3,6,12_____________________。
b.在p结点前插入s结点的语句序列是______8,4,5,13_________________。
c.删除p结点的直接后继结点的语句序
_____15,1,11,18__________________。
d.删除p结点的直接前驱结点的语句序
______16,2,10,18_________________。
e.删除p结点的语句序列是_____14,9,17__________________。
(1)p-next=p-next-next;
(2)p-priou=p-priou-priou;
(3)p-next=s;
(4)p-priou=s;
(5)s-next=p;
(6)s-priou=p;
(7)s-next=p-next;
(8)s-priou=p-priou;
(9)p-priou-next=p-next;
(10)p-priou-next=p;
(11)p-next-priou=p;
(12)p-next-priou=s;
(13)p-priou-next=s;
(14)p-next-priou=p-priou;列是列是
(15)q=p-next;
(16)q=p-priou;
(17)free(p);(18)free(q);
【篇二:
数据结构(c语言版)(第2版)课后习题答案】
李冬梅
2015.3
目录
第
第
第
第
第
第
第
第1章绪论......................................................................................................................12章线性表..................................................................................................................53章栈和队列............................................................................................................134章串、数组和广义表.............................................................................................265章树和二叉树.........................................................................................................336章图........................................................................................................................427章查找....................................................................................................................548章排序....................................................................................................................65
第1章绪论
1.简述下列概念:
数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:
数据:
是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:
是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:
是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据结构:
是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:
从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:
数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:
由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:
数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:
例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。
学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
这些学生记录在计算机中的存储表示就是存储结构。
如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。
即相同的逻辑结构,可以对应不同的存储结构。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
答案:
(1)集合结构
数据元素之间除了“属于同一集合”的关系外,别无其他关系。
例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。
(2)线性结构
数据元素之间存在一对一的关系。
例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。
(3)树结构
数据元素之间存在一对多的关系。
例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。
(4)图结构或网状结构
数据元素之间存在多对多的关系。
例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图形结构或网状结构。
其中树结构和图结构都属于非线性结构。
四类基本逻辑结构关系图
4.存储结构由哪两种基本的存储方法实现?
答案:
(1)顺序存储结构
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
(2)链式存储结构
顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。
但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
所以链式存储结构通常借助于程序设计语言的指针类型来描述。
5.选择题
(1)在数据结构中,从逻辑上可以把数据结构分成()。
a.动态结构和静态结构b.紧凑结构和非紧凑结构
c.线性结构和非线性结构d.内部结构和外部结构
答案:
c
(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
a.存储结构b.存储实现
c.逻辑结构d.运算实现
答案:
c
(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
a.数据具有同一特点
b.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
c.每个数据元素都一样
d.数据元素所包含的数据项的个数要相等
答案:
b
(4)以下说法正确的是()。
a.数据元素是数据的最小单位
b.数据项是数据的基本单位
c.数据结构是带有结构的各数据项的集合
d.一些表面上很不相同的数据可以有相同的逻辑结构
答案:
d
解释:
数据元素是数据的基本单位,数据项是数据的最小单位,数据结构是带有结构的各数据元素的集合。
(5)算法的时间复杂度取决于()。
a.问题的规模
答案:
d
解释:
算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。
如某些排序的算法,其执行时间与待排序记录的初始状态有关。
为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。
(6)以下数据结构中,()是非线性数据结构
a.树b.字符串c.队列d.栈
答案:
a
6.试分析下面各程序段的时间复杂度。
(1)x=90;y=100;
while(y0)
if(x100)
{x=x-10;y--;}
elsex++;
答案:
o
(1)
解释:
程序的执行次数为常数阶。
b.待处理数据的初态d.a和bc.计算机的配置
【篇三:
数据结构第二章自测题答案】
=txt>一、填空(每空1分,共13分)
1.【严题集2.2①】在顺序表中插入或删除一个元素,需要平均移动半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
2.线性表中结点的集合是的,结点间的关系是一对一的。
3.向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1个元素。
4.向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。
5.在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也
称为随机存取的数据结构。
6.【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
7.【严题集2.2①】在单链表中,除了首元结点外,任一结点的存储位置由直接前驱结点的链域的值指示。
8.在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为o(n)。
答:
错误。
链表中的结点可含多个指针域,分别存放多个指针。
例如,双向链表中的结点可以含有两个指针域,分别存放指向其
直接前趋和直接后继结点的指针。
错,链表的存储结构特点是无序,而链表的示意图有序。
会自动地将后续的各个单元向前移动。
错,链表的结点不会移动,只是指针内容改变。
错,混淆了逻辑结构与物理结构,链表也是线性表!
且即使是顺序
表,也能存放记录型数据。
错,前一半正确,但后一半说法错误,那是链式存储的优点。
顺序存储方式插入、删除运算效率较低,在表长为n的顺序
表中,插入和删除一个数据元素,平均需移动表长一半个数
的数据元素。
错误。
线性表有两种存储方式,在顺序存储时,逻辑上相邻
的元素在存储的物理位置次序上也相邻。
错误。
顺序存储方式不仅能用于存储线性结构,还可以用来
存放非线性结构,例如完全二叉树是属于非线性结构,但其
最佳存储方式是顺序存储方式。
(后一节介绍)
错,理由同7。
链式存储就无需一致。
三、单项选择题(每小题1分,共10分)
(c)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:
(a)存储结构(b)逻辑结构(c)顺序存储结构(d)链式存储结构
(b)2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是
(a)110(b)108(c)100(d)120
(a)3.在n个结点的顺序表中,算法的时间复杂度是o
(1)的操作是:
(a)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2
≤i≤n)
(b)在第i个结点后插入一个新结点(1≤i≤n)
(c)删除第i个结点(1≤i≤n)
(d)将n个结点从小到大排序
(b)4.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动
(a)8(b)63.5(c)63(d)7
(a)5.链接存储的存储结构所占存储空间:
(a)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
(b)只有一部分,存放结点值
(c)只有一部分,存储表示结点间关系的指针
(d)分两部分,一部分存放结点值,另一部分存放结点所占单元数
(b)6.链表是一种采用存储结构存储的线性表;
(a)顺序(b)链式(c)星式(d)网状
(d)7.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:
(a)必须是连续的(b)部分地址必须是连续的
(c)一定是不连续的(d)连续或不连续都可以
(b)8.线性表L在情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值(B)需不断对L进行删除插入(C)L中含有大量的结点(D)L中结点结构复杂
(c)9.单链表的存储密度
(A)大于1;(B)等于1;(C)小于1;(D)不能确定
(b)10.设a1、a2、a3为3个结点,整数p0,3,4代表地址,则如下的链式存储结构称为
p0
p0?
?
?
(A)循环链表(B)单链表(C)双向循环链表(D)双向链表
四、简答题(每小题5分,共10分)
1.【严题集2.3②】试比较顺序存储结构和链式存储结构的优缺点。
在什么情况下用顺序表比链表好?
答:
①顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。
优点:
存储密度大(=1?
),存储空间利用率高。
缺点:
插入或删除元素时不方便。
②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
优点:
插入或删除元素时很方便,使用灵活。
缺点:
存储密度小
(1),存储空间利用率低。
顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。
若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;
若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
2.【严题集2.1①】描述以下三个概念的区别:
头指针、头结点、首元结点(第一个元素结点)。
在单链表中设置头结点的作用是什么?
答:
首元结点是指链表中存储线性表中第一个数据元素a1的结点。
为了操作方便,通常在链表的首元结点之前附设一个结点,称为头结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理。
头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。
若链表中附设头结点,则不管线性表是否为空表,头指针均不为空。
否则表示空表的链表的头指针
为空。
这三个概念对单链表、双向链表和循环链表均适用。
是否设置头结点,是不同的存储结构表示同一逻辑结构的问题。
?
简而言之,
头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针;头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息(内放头指针?
那还得另配一个头指针!
!
!
)
首元素结点是指链表中存储线性表中第一个数据元素a1的结点。
五、【软考题】线性表具有两种存储方式,即顺序方式和链接方式。
现有一个具有五个元素的线性表l={23,17,47,05,31},若它以链接方式存储在下列100~119号地址空间中,每个结点由数据(占2个字节)和指针(占2^
100120
其中指针x,y,z的值分别为多少?
该线性表的首结点起始地址为多少?
末结点的起始地址为多少?
(10分)
答:
x=116y=0z=100首址=108末址=112
六、阅读分析题(10分)
【严题集2.10②】指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。
答:
错误有三处:
①参数不合法的判别条件不完整。
例如表长为10,若从第一位置(i=1)删除10个元素(k=10),要求合理但会被判为非法。
合法的入口参数条件为(0i≤a.length)^(0≤k≤a.length-i+1)
应将if(i1||k0||i+ka.length)returninfeasible
改为:
if(!
((0i≤a.length)^(0≤k≤a.length-i+1)))returninfeasible②第二个for语句中,元素前移的次序错误。
应将for(j=a.length;j=i+1;j--)a.elem[j-1]=a.elem[j];
改为for(j=i+k-count;j=a.length-count+1;j++)a.elem[j-1]=a.elem[j];③应将for(count=1;countk;count++)
改为for(count=1;count=k;count++)
改写算法为:
//删除线性表a中第i个元素起的k个元素
if(i1||k0||ka.length-i+1)returninfeasible;
for(count=1;count=a.length-k-i+1;count++)//注意循环结束的条件a.elem[i+count-2]=a.elem[i+count+k-2];
a.length-=k;
returnok;
}//deletek
七、编程题(每题10分,共40分)
1.【徐士良题集,2002年1月省统考题】写出在顺序存储结构下将线性表逆转的算法,要求使用最少的附加空间。
voidlinklist_reverse(linklistl){//链表的就地逆置;//为简化算法,假设表长大于2p=l-next;q=p-next;s=q-next;p-next=null;while(s-next){q-next=p;p=q;q=s;s=s-next;//把l的元素逐个插入表头}q-next=p;s-next=q;l-next=s;}//linklist_reverse
2.【严题集2.6②】已知l是无表头结点的单链表,且p结点既不是首元结点,也不是尾元结点,请写出在p结点后插入s结点的核心语句序列。
答:
此题答案不唯一,但若从已给定序列中挑选,则限制颇多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第二 习题 答案