第二章 线性表习题.docx
- 文档编号:28834213
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:12
- 大小:18.45KB
第二章 线性表习题.docx
《第二章 线性表习题.docx》由会员分享,可在线阅读,更多相关《第二章 线性表习题.docx(12页珍藏版)》请在冰豆网上搜索。
第二章线性表习题
第二章线性表 习题
判断题
1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。
( )
选择题
1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()
(A)110(B)108(C)100(D)120
3.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。
(A)64(B)63(C)63.5 (D)7
4.线性表采用链式存储结构时,其地址()。
(A)必须是连续的(B)部分地址必须是连续的
(C)一定是不连续的(D)连续与否均可以
5.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()
(A)s->next=p;p->next=s;(B)s->next=p->next;p->next=s;
(C)s->next=p->next;p=s;(D)p->next=s;s->next=p;
6.在一个单链表中,若删除p所指结点的后续结点,则执行()
(A)p->next=p->next->next;(B)p=p->next;p->next=p->next->next;
(C)p->next=p->next;(D)p=p->next->next;
7.下列有关线性表的叙述中,正确的是( )
(A)线性表中的元素之间隔是线性关系
(B)线性表中至少有一个元素
(C)线性表中任何一个元素有且仅有一个直接前趋
(D)线性表中任何一个元素有且仅有一个直接后继
8.线性表是具有n个()的有限序列(n≠0)
(A)表元素(B)字符(C)数据元素 (D)数据项
填空题
1.已知P为单链表中的非首尾结点,在P结点后插入S结点的语句为:
()。
2.顺序表中逻辑上相邻的元素物理位置(一定)相邻,单链表中逻辑上相邻的元素物理位置()相邻。
3.线性表L=(a1,a2,...,an)采用顺序存储,假定在不同的n+1个位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是()
算法设计题
1、试编写一个求已知单链表的数据域的平均值的函数(数据域数据类型为整
型)。
解答:
#include"stdio.h"
#include"malloc.h"
typedefstructnode
{intdata;
structnode*link;
}NODE;
intaver(NODE*head)
{inti=0,sum=0,ave;NODE*p;
p=head;
while(p!
=NULL)
{p=p->link;++i;
sum=sum+p->data;}
ave=sum/i;
return(ave);}
2、已知带有头结点的循环链表中头指针为head,试写出删除并释放数据域值
为x的所有结点的c函数。
解答:
#include"stdio.h"
#include"malloc.h"
typedefstructnode
{
intdata;/*假设数据域为整型*/
structnode*link;
}NODE;
voiddel_link(NODE*head,intx)/*删除数据域为x的结点*/
{
NODE*p,*q,*s;
p=head;
q=head->link;
while(q!
=head)
{
if(q->data==x)
{
p->link=q->link;
s=q;
q=q->link;
free(s);
}
else
{
p=q;
q=q->link;
}
}
}
3、某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环
链表,每个结点有价格、数量和链指针三个域。
现出库(销售)m台价格
为h的电视机,试编写算法修改原链表。
解答:
voiddel(NODE*head,floatprice,intnum)
{
NODE*p,*q,*s;
p=head;q=head->next;
while(q->price =head) { p=q; q=q->next; } if(q->price==price) q->num=q->num-num; else printf("无此产品"); if(q->num==0) { p->next=q->next; free(q); } } 4、某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环 链表,每个结点有价格、数量和链指针三个域。 现新到m台价格为h的电视机,试编写算法修改原链表。 #include"stdio.h" #include"malloc.h" typedefstructnode { floatprice; intnum; structnode*next; }NODE; voidins(NODE*head,floatprice,intnum) { NODE*p,*q,*s; p=head;q=head->next; while(q->price =head) { p=q; q=q->next; } if(q->price==price) q->num=q->num+num; else { s=(NODE*)malloc(sizeof(NODE)); s->price=price; s->num=num; s->next=p->next; p->next=s; } } 算法设计题部分 1、线性表中的元素值按递增有序排列,针对顺序表和循环链表两种不同的存储方式,分别编写C函数删除线性表中值介于a与b(a≤b)之间的元素。 顺序表: 算法思想: 从0开始扫描线性表,用k记录下元素值在a与b之间的元素个数,对于不满足该条件的元素,前移k个位置,最后修改线性表的长度。 voiddel(elemtypelist[],int*n,elemtypea,elemtypeb) { inti=0,k=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 线性表习题 第二 线性 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)