线性表的链式存储结构实验报告Word格式文档下载.docx
- 文档编号:17332731
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:10
- 大小:55.23KB
线性表的链式存储结构实验报告Word格式文档下载.docx
《线性表的链式存储结构实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《线性表的链式存储结构实验报告Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
②(选做)设线性表L1和L2中的数据元素为整数,且均已按值非递减有序排列,试设计算法对L1和L2进行合并,用线性表L3保存合并结果,要求L3中的数据元素也按值非递减有序排列。
⑸设计一个一元多项式计算器,要求能够:
①输入并建立多项式;
②输出多项式;
③执行两个多项式相加;
④执行两个多项式相减;
⑤(选做)执行两个多项式相乘。
三、数据结构设计
1.按所用指针的类型、个数、方法等的不同,又可分为:
线性链表(单链表)
静态链表
循环链表
双向链表
双向循环链表
2.用一组任意的存储单元存储线性表中数据元素,用指针来表示数据元素间的逻辑关系。
四、算法设计
1.定义一个链表
voidcreatlist(Linklist&
L,intn)
{
inti;
Linklistp,s;
L=(Linklist)malloc(sizeof(Lnode));
p=L;
L->
next=NULL;
for(i=0;
i<
n;
i++)
{
s=(Linklist)malloc(sizeof(Lnode));
scanf("
%d"
&
s->
data);
s->
p->
next=s;
p=s;
}
}
2.
(1)两个链表的合并
voidMergelist(Linklist&
La,Linklist&
Lb,Linklist&
Lc)
Linklistpa,pb,pc;
pa=La->
next;
pb=Lb->
Lc=pc=La;
while(pa&
&
pb)
if(pa->
data<
=pb->
data)
{pc->
next=pa;
pc=pa;
pa=pa->
else{pc->
next=pb;
pc=pb;
pb=pb->
pc->
next=pa?
pa:
pb;
free(Lb);
(2)两个链表的并集
Linklistunionlist(Linklist&
Lb)
Linklistp1,p2,head,q,s;
intflag;
head=q=(Linklist)malloc(sizeof(Lnode));
p1=La->
while(p1)
flag=0;
p2=Lb->
while(p2)
{
if(p1->
data==p2->
{
flag=1;
break;
}
p2=p2->
}
if(flag==0)
s=(Linklist)malloc(sizeof(Lnode));
s->
data=p1->
data;
q->
q=s;
p1=p1->
q->
next=Lb->
returnhead;
3.
(1)一元多项式的加法
Listaddpoly(Listpa,Listpb)//一元多项式的加法
intn;
Listpc,s,p;
pa=pa->
pb=pb->
pc=(List)malloc(sizeof(structLinklist));
p=pc;
while(pa!
=NULL&
pb!
=NULL)
expn>
pb->
expn)
s=(List)malloc(sizeof(structLinklist));
expn=pa->
expn;
coef=pa->
coef;
p->
p=s;
pa=pa->
elseif(pa->
expn<
expn=pb->
coef=pb->
pb=pb->
else
n=pa->
coef+pb->
if(n!
=0)
coef=n;
s=(List)malloc(sizeof(structLinklist));
p=s;
pa=pa->
while(pb!
pb=pb->
returnpc;
(2)一元多项式的减法
Listsubpoly(Listpa,Listpb)//一元多项式的减法
coef=-pb->
coef-pb->
(3)一元多项式的乘法
voidmulpolyn(polynomailpa,polynomailpb,polynomail&
pc)
{
LNode*p,*q,*s,*hc;
p=pa->
q=pb->
hc=pc;
while(p!
{
while(q!
{
s=(polynomail)malloc(sizeof(LNode));
hc->
hc=hc->
coef=q->
coef*p->
expn=q->
expn+p->
q=q->
p=p->
q=pb->
hc->
五、测试结果
2.
3.
六、心得体会(包括对于本次实验的小结,实验过程中碰到的问题等)
1.首先书上给的链表输入是倒序的,写的时候想都没想就抄上去了,结果运行时发现问题,可是上网XX依然没有把问题解决,导致最后输出链表倒序的,并且链表的合并并集依旧是倒序的。
2.当写一元多项式的加减时,前提是弄清楚各种情况,系数相同时就相加减,系数不同就保留原有多项式;
当系数相加减为0时,就free这个节点。
在做减法时,我考虑到了减数与被减数之间的关系。
3.在做多项式时,我准备按照书上的算法一个一个写小函数,结果到最后发现写不下去了,就去问问同学和上网看看,结果感觉写这个数据结构的程序其实不必想麻烦了,只是指针,数组的高级运用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 链式 存储 结构 实验 报告