ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:21.10KB ,
资源ID:3018738      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3018738.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(线性表.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

线性表.docx

1、线性表线性表(总分:104.00,做题时间:90分钟)一、单项选择题(总题数:12,分数:24.00)1.(1)静态链表既有顺序存储的优点,又有动态链表的优点,所以,它存取表中第i个元素的时间与i无关。(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误的是( )。(分数:2.00)A.(1),(2)B.(1)C.(1),(2),(3)D.(2)解析:静态链表使用结构体数组来实现线性链表的功能。因为其用游标cur来指示下一个数据元素的存储位置,所以存取数据时静态链表同线性链表(单链表)是相似的。也

2、就是说,静态链表在存取表中第i个元素的时间同i是相关的。2.在一个长度为n的顺序表中删除第i个元素(0=i=n)时,需向前移动( )个元素。(分数:2.00)A.n-iB.n-i+1C.n-i-1D.i解析:一般情况下,删除顺序表的第i(1-i-n)个元素时需要将第i+1到第n个元素(共n-i个元素)依次向前移动一个位置。所以答案为A。3.下面关于线性表的叙述中,错误的是哪一个?( )(分数:2.00)A.线性表采用顺序存储,必须占用一片连续的存储单元B.线性表采用顺序存储,便于进行插入和删除操作C.线性表采用链接存储,不必占用一片连续的存储单元D.线性表采用链接存储,便于插入和删除操作解析:

3、线性表采用顺序存储,并不便于进行插入和删除操作。4.下述哪一条是顺序存储结构的优点?( )(分数:2.00)A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示解析:顺序存储利用物理的邻接关系表示数据元素之间的逻辑关系,因此没有必要设置指针域,所以其存储密度比链式存储大,但是插入运算和删除运算都需大量移动数据元素,并不方便;D选项并不是顺序存储结构的优点。所以答案为A。5.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。(分数:2.00)A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表解析:“存

4、取任一指定序号”最好的方法是实现“随机存取”,则可采用顺序表。并且,因为插入和删除操作都是在最后进行的,所以无需大量移动数据元素,选项A是最合适的。6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。(分数:2.00)A.O(n),O(n)B.O(n),O(1)C.O(1),O(n)D.O(1),O(1)解析:顺序存储可以实现“随机存取”,因此访问结点的时间复杂度为O(1),而插入、删除结点由于涉及到大量移动元素,故其时间复杂度为O(n)。7.线性表是( )。(分数:2.00)A.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空D.一个无限序列,

5、不可以为空解析:线性表是由相同类型的结点组成的有限序列。如:由n个结点组成的线性表(a1,a2,an)a1是最前结点,an是最后结点。结点也称为数据元素或者记录。线性表中结点的个数称为其长度。长度为O的线性表称为空表。所以答案为A。8.设单链表中结点的结构为typedef struct node链表结点定义ElemType data; 数据struct node*Link; 结点后继指针ListNode;已知指针p所指结点不是尾结点,若在p之后插入结点s,则应执行下列哪一个操作?( )(分数:2.00)A.slinkp;plinks;B.slinkplink;plinks;C.s一link=P

6、link;PS;D.plinkS;slinkp;解析:*9.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。(分数:2.00)A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表解析:仅有尾指针的单循环链表,可以非常方便地找到尾结点,尾结点后面的第一个结点往往是头结点,头结点的下一个结点就是第线性表的第一个结点。对最后一个元素和第一个元素操作对带尾指针的单循环链表是非常方便的。10.在双向循环链表中,在P所指的结点之后插入S指针所指的结点,其操作是( )。(分数:2.00)A.pnext=s;sprior=p;pn

7、extprior=s;snext=pnext;B.sprior=p;snext=pnext;pnext=s;Pnextprior=s:C.pnext=s;pnextprior=s;sprior=p;snext=pnext;D.sprior=p;snext=pnext;pnextprior=s;pnext=s:解析:同单链表相比,双向链表的插入、删除操作需同时修改两个指针。*步骤:spriorpprior;ppriornext=s;snext=p;pprior=s;11.在一个长度为n的顺序表中向第i个元素(0in+1)之前插入一个新元素时,需向后移动( )个元素。(分数:2.00)A.n-iB

8、.n-i+1C.n-i-1D.i解析:一般情况下,在顺序表的第i(1=i=n)个元素之前插入一个元素,需要将第n至i的元素(共n-i+1个元素)向后移动一个位置。所以答案为B。12.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( )(1=i=n+1)。(分数:2.00)A.O(0)B.O(1)C.O(n)D.O(n2)解析:顺序存储的线性表在插入新元素时,需要将第i个元素到第n个元素均向后移动一个单位,插入的新元素成为第i个元素,原来的第i个元素成为第i+1个元素,原来的第n个元素成为第n+1个元素,线性表的长度加1,插入操作的主要工作都放在移动元素上。

9、假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:除非插入在线性表的最后,否则都要移动元素。所以其时间复杂度为O(n),答案为C。二、综合应用题(总题数:8,分数:80.00)13.设计在无头结点的单链表中删除第i个结点的算法。(分数:10.00)_正确答案:(算法思想为:(1)应判断删除位置的合法性,当i0或in-1时,不允许进行删除操作;(2)当i=0时,删除第一个结点;(3)当0in时,允许进行删除操作,但在查找被删除结点时,须用指针记住该结点的前趋结点。算法描述如下:delete(LinkList*q,int i) 在无

10、头结点的单链表中删除第i个结点LinkList *P,*S;int j;if(i0)printf(“Cant delete”);else if(i=0) s=q;q=qnext;free(s);elsej=0;s=q;while(ji)&(s!=NULL) p=s;s=s=next;j+:if(s=NULL)printf(“Cantt delete”);else pnext=snext;free(s);)解析:14.设计将带表头的链表逆置算法。(分数:10.00)_正确答案:(解析:设单循环链表的头指针为head,类型为LinkList。逆置时需将每一个结点的指针域做一修改,使其原前趋结点成为

11、后继。如要更改q结点的指针域时,设S指向其原前趋结点,P指向其原后继结点,则只需进行qnexts;操作即可,算法描述如下:void invert(LinkList*head) 逆置head指针所指向的单循环链表linklist*p,*q,*S;q=head;pheadnext;while(p!=head) 当表不为空时,逐个结点逆置 s=q;q=P;p=pnext;qnext=s;pnext=q;,)解析:15.设顺序表中的数据元素递增有序,编写一算法将元素X插入到顺序表的适当位置上,并保证该表的有序性。(分数:10.00)_正确答案:(只要从终端结点开始往前找到第一个比X小(或相等)的结点数

12、据,在这个位置插入就可以了。算法描述如下:SqList*InsertSqList(SqList*L,int i,Elemtype x)if(i1)(iLlength+1)printf(“插入位置不合理”);exit(l);if(LlengthLMaxSize1)print(“顺序表已满,不能再插入!”);exit(l);or(mLlength1;m=i1;m)Ldatam+1=Ldatam;Ldatai1=x;Llength+:return L;)解析:16.设线性表A=(a1,a2,a3,an)以带头结点的单链表作为存储结构。编写一个函数,对A进行调整,使得当n为奇数时A=(a2,a4,an-1,a1,a3,an),当n为偶数时A=(a2,a4,an,a1,a3,an-1)。(分数:10.00)_正确答案:(方法一:void f(LinkList L)LinkList p,q,r;p=L;*P是偶数尾结点q=Lnext;*q是当前奇数结点while(q&qnext)尚有未调整的偶数结点r=qnext;r指向当前偶数结点qnext=rnext;删除偶数结点rnext=Pnext。Pnext=r; 插入偶数结点p=pnext;q=qnext;方法二:void f(LinkList L)LinkList p,h,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1