多项式合并同类项c语言链表,数据结构(C语言)用单链表存储一元多项式并实现两个多项式的相加运算.doc...

44cb7578e1df5412b94317daaa3307ba.gif数据结构(C语言)用单链表存储一元多项式并实现两个多项式的相加运算.doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

10

积分

还剩页未读,继续阅读

关 键 词:数据结构

语言

用单链表

存储

一元

多项式

实现

两个

相加

运算

资源描述:

#include#include#includetypedefintElemType;

/*单项链表的声明*/

typedefstructPolynNode{

intcoef;//系数

intexpn;//指数

structPolynNode*next;

}PolynNode,*PolynList;

/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/

/*指数系数一对一对输入*/

voidCreatePolyn(PolynList&L,intn)

{

inti;

PolynListp,q;

L=(PolynList)malloc(sizeof(PolynNode));//生成头结点

L->next=NULL;

q=L;

printf("成对输入%d个数据\n",n);

for(i=1;i<=n;i++)

{

p=(PolynList)malloc(sizeof(PolynNode));

scanf("%d%d",&p->coef,&p->expn);//指数和系数成对输入

q->next=p;

q=q->next;

}

p->next=NULL;

}

//初始条件:单链表L已存在

//操作结果:依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败

voidPolynTraverse(PolynListL,void(*vi)(ElemType,ElemType))

{

PolynListp=L->next;

while(p)

{

vi(p->coef,p->expn);

if(p->next)

{

printf("+");//“+”号的输出,最后一项后面没有“+”

}

p=p->next;

}

printf("\n");

}

/*ListTraverse()调用的函数(类型要一致)*/

voidvisit(ElemTypec,ElemTypee)

{

if(c!=0)

{

printf("%dX^%d",c,e);//格式化输出多项式每一项

}

}

/*多项式相加,原理:归并*/

/*参数:两个已经存在的多项式*/

/*返回值:归并后新的多项式的头结点*/

PolynListMergeList(PolynListLa,PolynListLb)

{

PolynListpa,pb,pc,Lc;

pa=La->next;

pb=Lb->next;

Lc=pc=La;//用La的头结点作为Lc的头结点

while(pa&&pb)

{

if(pa->expnexpn)

{

pc->next=pa;//如果指数不相等,pc指针连上指数小的结点,

pc=pa;

pa=pa->next;//指向该结点的指针后移

}

elseif(pa->expn>pb->expn)

{

pc->next=pb;//pc指针连上指数小的结点,

pc=pb;

pb=pb->next;//指向该结点的指针后移

}

else//(pa->expn=pb->expn)

{

pa->coef=pa->coef+pb->coef;//指数相等时,系数相加

pc->next=pa;

pc=pa;

pa=pa->next;//两指针都往后移

pb=pb->next;

}

}

pc->next=pa?pa:pb;//插入剩余段

returnLc;

}

voidmain()

{

PolynListha,hb,hc;

printf("非递减输入多项式ha,");

CreatePolyn(ha,5);//正位序输入n个元素的值

printf("非递减输入多项式hb,");

CreatePolyn(hb,5);//正位序输入n个元素的值

printf("多项式ha:");

PolynTraverse(ha,visit);

printf("\n");

printf("多项式hb:");

PolynTraverse(hb,visit);

printf("\n");

hc=MergeList(ha,hb);

PolynTraverse(hc,visit);

}

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:数据结构(C语言)用单链表存储一元多项式并实现两个多项式的相加运算.doc

链接地址:https://www.renrendoc.com/p-76562804.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值