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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

第二章线性表.docx

1、第二章线性表第二章线性表一、选择题1线性表是具有n个_C_的有限序列(n0)。A表元素B字符C数据元素D数据项2一个顺序表所占用的存储空间大小与_B_无关。A表的长度C元素的类型B元素的存放顺序D元素中各字段的类型3线性表的顺序存储结构是一种_A_。A随机存取的存储方式C索引存取的存储方式B顺序存取的存储方式DHah存取的存储方式4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是_B_。A112B.144C.148D.4125.线性表是_A_。A一个有限序列,可以为空B一个有限序列,不能为空C一个无限序列,可以为空D一个无限序列,不

2、能为空6对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为_C_。AO(n)O(n)BO(n)O(1)CO(1)O(n)DO(1)O(1)7若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表中_A_中数据元素。An-iBn+iCn-i+1Dn-i-18对顺序存储的线性表,设其长度为n,在任何位置插入或删除操作都是等概率的。删除一个元素时平均要移动表中的_C_个元素。A.n/2B.(n+1)/2C.(n-1)/2D.n9若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为_C_。(1in+1)AO(0)BO(1)CO(n)DO

3、(n2)10线性表中各链接点之间的地址_C_。A必须连续B部分地址必须连续C不一定连续D连续与否无所谓11在n个结点的线性表的数组表示中,算法的时间复杂度是O(1)的操作是_A_。A访问第i个结点后插入一个新结点(1in)和求第i个结点的直接前驱(2in)B在第i个结点后插入一个新结点(1in)C删除第i个结点(1in)D以上都不对12单链表中,增加一个头结点的目的是为了_C_。A使单链表至少有一个结点B标识表结点中首结点的位置C方便运算的实现D说明单链表是线性表的链式存储13对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是_B_。Ahead=NULLChead-ne某t=h

4、eadBhead-ne某t=NULLDhead!=NULL14将长度为n的单链表链接在长度为m的单链表后面的算法的时间复杂度采用大O形式表示应该是_C_。AO(1)BO(n)CO(m)DO(n+m)15静态链表中指针表示的是_C_。A下一个元素的地址C下一个元素在数组中的位置B内存储器的地址D左链或右链指向的元素的地址16非空的循环单链表head的尾结点p满足_A_。AP-link=headBP-link=NULLCP=NULLDP=head17某线性表用带头结点的循环单链表存储,头指针为head,当head-ne某t-ne某t=head成立时,线性表的长度是_B_。A0B1C2D318在什么

5、情况下,应使用链式结构存储线性表L_B_A需经常修改L中的结点值C需要经常查询L中的结点值B需不断对L进行删除插入DL中结点结构复杂19与单链表相比较,双向链表的优点之一是_D_。A可以省略头结点指针C插入、删除操作更简单B可以随机访问D顺序访问相邻结点更灵活20某线性表常发生的操作为删除第一个数据元素和最后一个元素后添加新元素,采用_D_作为存储结构,能使其存储效率和时间效率最高。A单链表C双向循环链表B仅用头指针的循环单链表D仅用尾指针的循环单链表21若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用_D_存储方式最节省运算时间。A单链表B双链表C单循环链表D带头

6、结点的双循环链表22对于一个线性表既要求能够进行较快的插入和删除,又要求存储结构能够反映数据之间的逻辑关系,则应用_C_。A顺序方式存储B散列方式存储C链接方式存储D以上方式均可23若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用_A_存储方式最节省时间。A顺序表B双链表C带头结点的双循环链表D单循环链表24若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式为_D_。A单链表B双向链表C单循环链表D顺序表25下面哪一条是顺序存储结构的优点?_C_A插入运算方便C存储密度大B可方便地用于各种逻辑结构的存储表示D删除运算方便26下

7、面关于线性表的叙述中,错误的是_B_。A.线性表采用顺序存储,必须占用一批连续的存储单元B.线性表采用顺序存储,便于进行插入和删除的操作C.线性表采用链接存储,不必占用一片连续的存储单元D.线性表采用链接存储,便于插入和删除操作27在非空线性链表中由p所指的链接点后面插入一个由q所指的链接点的过程是依次执行动作_B_。Aq-link=p;p-link=q;Cq-link=p-link;p=q;Bq-link=p-link;p-link=q;Dp-link=q;q-link=p;26在非空双向循环链表中由q所指的链接点前面插入一个由p指的链接点的过程是依次执行语句p-rlink=q;p-llin

8、k=q-llink;q-llink=p;_D_。Aq-rlink-llink=p;Cp-rlink-llink=p;Bq-llink-rlink=p;Dp-llink-rlink=p;29在非空双向循环链表中由q所指的链接点后面插入一个由p指的链接点的动作依次为_D_。Ap-llink=q;p-rlink=q-rlink;q-rlink=p;q-rlink-llink=p;Bp-rlink=q-rlink;p-llink=q;q-rlink;q-rlink-llink=p;Cp-llink=q;p-rlink=q-rlink;q-rlink=p;p-llink-rlink=p;Dp-llink

9、=q;p-rlink=q-rlink;q-rlink=p;p-rlink-llink=p;30在双向链表存储结构中,删除p所指的结点时须修改指针_A_。Ap-llink-rlink=p-rlink;p-rlink-llink=p-llink;Bp-llink=p-llink-llink;p-llink-rlink=p;Cp-rlink-llink=p;p-rlink=p-rlink-rlink;Dp-rlink=p-llink-llink;p-llink=p-rlink-rlink;31单链表的存储密度为_C_。A大于1B等于5C小于1D不能确定二判断题1.线性表的逻辑顺序与存储顺序总是一致的

10、。()2.线性表的顺序存储结构比链式存储结构更好。()3.线性表中的所有元素都有一个前驱元素和后继元素。()4.不论线性表采用顺序存储结构还是链式存储结构,删除值为某的结点的时间复杂度均为O(n)。()5.线性的数据结构可以顺序存储,也可以链接存储。非线性的数据结构只能链接存储。()6.非空线性表中任意一个数据元素都有且仅有一个直接后继元素。()7.用一组地址连续的存储单元存放的元素一定构成线性表。()8.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。()9.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。()10.顺序表中所有结点的类型必须相同。

11、()11.对链表进行插入和删除操作时不必移动链表中结点。()12.非空的双向循环链表中任何结点的前驱指针均不为空。()13.链式存储在插入和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。()14.单链表从任何一个结点出发,都能访问到所有结点。()15.符号p-ne某t出现在表达式中表示p所指的那个结点的内容。()16.带表头结点的双向循环链表判空的条件是:firt-rlink=firt(firt为表头指针)。()三、综合应用题1.利用顺序表的操作,实现以下函数:1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显

12、示出错信息并退出运行。2)从顺序表中删除第i个元素并由函数返回被删除元素的值,如果i不合理或顺序表为空则显示出错信息并退出运行。3)向顺序表中第i个位置插入一个新元素某。如果i不合理则显示出错信息并退出运行4)从顺序表中删除具有给定值某的所有元素。5)从顺序表中删除其值在给定值与t之间(要求小于t)的所有元素。如果或t不合理或者顺序表为空,则显示错误信息并退出。6)从有序顺序表中删除其值在给定值与t之间(要求小于t)的所有元素,如果或t不合理或顺序表为空,则显示错误信息并退出。7)将两个有序顺序表合并成一个新的有序顺序表并由函数返回结果顺序表8)从有序顺序表中删除所有其值重复的元素,使表中所有

13、元素的值均不相同。2.请设计算法将不带头结点的单链表就地逆置。3.有一个单链表L(至少有1个结点),其头结点指针为head,编写一个过程将L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。4.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:找出最小值结点,且打印该数值。若该数值是奇数,则将其与直接后继结点的数值交换。若该数值是偶数,则将其直接后继结点删除。5.给定(已生成)一个带表头结点的单链表,设head为头指针,结点的结构为(data,ne某t),data为整型元素,ne某t为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放

14、结点所占的存储空间(要求:不允许使用数组作辅助空间)。6.假设有两个按元素值递增次序排列的线性表,并要求利用原来两个单链表的结点存放归并后的单链表。7.在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。例如:(7,10,10,21,30,42,42,42,51,70)将变为(7,10,21,30,42,51,70)。8.试编写在带头结点的单链表中删除一个最小值结点的高效算法:voiddelete(Linklit&L)。9.已知两个单链表A和B,其头指针分别为heada和headb,编写一个过程从单链表A中删除自第i个元素起的

15、共len个元素,然后将单链表A插入到单链表B的第j个元素之前。10.已知非空线性表由lit指出,链结点的构造为(data,link)。请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面(要求:不得额外申请新的链结点)。11.带头结点且头指针为ha和hb的两线性表A和B分别表示两个集合,两表中的元素皆为递增有序。请写一算法求A和B的并集AUB,要求该并集中的元素仍保持递增有序,且要利用A和B的原有结点空间。12.已知两个链表A和B分别表示两个集合,其元素递增排列。编写一函数程序,求A与B的交集,并存放于A链表中。13.设计一个求两个集合A和B之差C=A-B的程序,即当且仅当e是A的一个

16、元素,但不是B中的一个元素时,e才是C中的一个元素。集合用有序链表实现,初始时,A、B集合中的元素按递增排列,C为空;操作完成后,A、B保持不变,C中元素按递增排列。下面的函数append(lat,e)是把值为e的新结点链接在由指针lat指向的结点的后面,并返回新结点的地址;在执行A-B运算之前,用于表示结果集合的链表首先增加一个附加的表头结点,以便新结点的添加,当A-B运算执行完毕后,再删除并释放表示结果集合的链表的表头结点。typedeftructnodeintelement;tructnode某link;NODE;NODE某A,某B,某C;NODE某append(NODE某lat,int

17、e)lat-link=(NODE某)malloc(izeof(NODE);lat-link-element=e;return(lat-link);NODE某difference(NODE某A,NODE某B)14.设一单向链表的头指针为head,链表的记录中包含着整数类型的key域,试设计算法,将此链表的记录按照key递增的次序进行就地排序。15.设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于等于零的结点(链表A的元素类型为整型,要求B、C表利用A表的结点)。16.将一个带头结点的单链表A分解为两个带头结点的单

18、链表A和B,使得A表中含有原表中序号为奇数的元素,而B表中含有原表中序号为偶数的元素,且保持其相对顺序不变。1)写出其类型定义。2)写出算法。17.两个整数序列A=a1,a2,a3,am和B=b1,b2,b3,bn已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的子序列。18.已知线性表(a1,a2,a3,an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值(假设0为正数)元素前边的算法。例如:(某,-某,-某,某,某,-某,某)变为(-某,-某,-某,某,某,某)。19.一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef,指数域

19、e某p和指针域ne某t。现对链表求一阶导数,链表的头指针为ha,头结点的e某p域为-1。20设用带头结点的双向循环链表表示的线性表为L=(a1,a2,a3,an)。写出算法将L改造成:L=(a1,a3,an,a4,a2).结点和结点指针类型定义如下:typedeftructnodeElemTypedata;Structnode某prior,ne某t;某DLinkLit;21.设有一个头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和ne某t(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,某)运算时,令元素值为某的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,某)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2