数据结构实验报告4Word文档下载推荐.docx

上传人:b****3 文档编号:16615355 上传时间:2022-11-24 格式:DOCX 页数:13 大小:141.08KB
下载 相关 举报
数据结构实验报告4Word文档下载推荐.docx_第1页
第1页 / 共13页
数据结构实验报告4Word文档下载推荐.docx_第2页
第2页 / 共13页
数据结构实验报告4Word文档下载推荐.docx_第3页
第3页 / 共13页
数据结构实验报告4Word文档下载推荐.docx_第4页
第4页 / 共13页
数据结构实验报告4Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构实验报告4Word文档下载推荐.docx

《数据结构实验报告4Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告4Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构实验报告4Word文档下载推荐.docx

(2)两个升幂多项式的相加。

三、算法描述

(采用自然语言描述)

1.

创建带头节点的链表,

输入两个有序表数据LaLb

归并两个有序表得有序表Lc

输出三个有序表

输入需插入数据e

将e插入有序表Lc

输出插入e后的Lc

2.

创建链表

按指数升序输入多项式得序数和指数

输出多项式

按指数升序输入第二个多项式得序数和指数

两个多项式相加

输出第二个多项式和两个多项式得和

四、详细设计

(画出程序流程图)

1.

五、程序代码

(给出必要注释)

#include<

stdio.h>

malloc.h>

typedefstructLNode

{

intdate;

structLNode*next;

}LNode,*Link;

typedefstructLinkList

Linkhead;

//头结点

intlenth;

//链表中数据元素的个数

}LinkList;

intcompare(LinkList*L,inte)//有序判定函数compare

intLc=0;

Linkp;

p=L->

head;

p=p->

next;

while(p!

=NULL)

{

if(e>

p->

date)

Lc++;

}

else

returnLc;

}

voidOrderInsert(LinkList*L,inte,int(*compare)())//根据有序判定函数compare,在有序表L的适当位置插入元素e;

Linktemp,p,q;

intLc,i;

temp=(Link)malloc(sizeof(LNode));

temp->

date=e;

p=q=L->

Lc=(*compare)(L,e);

if(Lc==L->

lenth)

while(q->

next!

q=q->

q->

next=temp;

next=NULL;

for(i=0;

i<

Lc;

i++)

next=p;

++L->

lenth;

voidOrderMerge(LinkList*La,LinkList*Lb,int(*compare)())//根据有序判定函数compare,将两个有序表La和Lb归并为一个有序表

inti,Lc=0;

q=La->

head->

while(q!

p=Lb->

date=q->

date;

Lc=(*compare)(Lb,q->

date);

if(Lc==Lb->

while(p->

p->

next=p->

++Lb->

LinkList*Initialize(LinkList*NewList)

inti;

Linktemp;

NewList=(LinkList*)malloc((2+1)*sizeof(LinkList));

2+1;

date=0;

(NewList+i)->

head=temp;

lenth=0;

returnNewList;

voidInsert(LinkList*NewList)

inta,i;

charc;

printf("

在第1个表中插入数据,输入“N”再对下个表插入数据\n"

);

2;

while

(1)

scanf("

%d"

&

a);

c=getchar();

if(c=='

N'

if(i<

2-2)

在第%d个表中插入数据,输入“N”再对下个表插入数据\n"

i+2);

elseif(i==2-2)

在第%d个表中插入数据,输入“N”结束。

\n"

break;

OrderInsert((NewList+i),a,compare);

voidShow(LinkList*L)//输出有序表

%d"

p->

voidvisit(LinkList*NewList,void(*Show)())

有序表如下:

\n"

第一个有序表为:

(*Show)(NewList+0);

第二个有序表为:

(*Show)(NewList+1);

归并后有序表为:

(*Show)(NewList+2);

intmain()

LinkList*NewList=NULL;

LinkList*L;

inti,e;

请按要求输入数据\n"

NewList=Initialize(NewList);

Insert(NewList);

OrderMerge(NewList+i,NewList+2,compare);

visit(NewList,Show);

L=NewList;

\n请输入将要插入的e:

e);

OrderInsert((NewList+i),e,compare);

对归并后有序表插入e后得\n"

Show(NewList+2);

return0;

typedefstructnode

intxi;

intzi;

structnode*next;

}Node;

Node*Creat()//用链表储存多项式的序数与指数

Node*head,*p,*q;

intor,in;

head=(Node*)malloc(sizeof(Node));

head->

q=head;

请输入多项式的序数与指数\n(注意:

按照指数升序输入,系数不能等于0且指数不能小于0,序数与指数用空格隔开,并以00结束输入)\n"

%d%d"

or,&

in);

while(or)

p=(Node*)malloc(sizeof(Node));

xi=or;

zi=in;

next=q->

q=p;

returnhead;

voidvisit(Node*head)//输出多项式

Node*p=head->

while(p)

%dX^%d+"

xi,p->

zi);

NULL\n\n"

Node*Add(Node*head1,Node*head2)//多项式相加

Node*p,*head,*p1,*p2;

intsum;

p=head;

p1=head1->

p2=head2->

while(p1&

&

p2)//当两多项式都存在时

if(p1->

zi==p2->

zi)//如果指数相等

sum=p1->

xi+p2->

xi;

if(sum)

p1->

xi=sum;

next=p1;

p=p1;

p1=p1->

p2=p2->

else//指数不相等分两种情况

zi<

p2->

zi)

next=p2;

p=p2;

if(p1)p->

//将1中剩余结点接到和链表中因为最终只剩下一段链表多项式

elsep->

//将2中剩余结点接到和链表中这段链的链头接到目标链表就可以了

请输入第一个多项式\n"

Node*head,*p1,*p2;

p1=Creat();

多项式为:

visit(p1);

请输入第二个多项式\n"

p2=Creat();

visit(p2);

head=Add(p1,p2);

\n多项式相加后得:

visit(head);

六、测试和结果

(给出测试用例,并给出测试结果)

七、用户手册

(告诉用户如何使用程序,使用注意事项等)

1.按照要求输入

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

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

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