首页 C语言 多项式的加减

C语言 多项式的加减

举报
开通vip

C语言 多项式的加减多项式的加减 详细设计 #include #include #include typedef struct term{      //多项式结点的定义 float coef;            //系数 int exp;              //指数 struct term *link;    //链接指针 }*Poly; void Input(Poly &pl)    //输入多项式 {  term *nterm,*p,*pre; float c; int e; pl=new term;  ...

C语言 多项式的加减
多项式的加减 详细设计 #include #include #include typedef struct term{      //多项式结点的定义 float coef;            //系数 int exp;              //指数 struct term *link;    //链接指针 }*Poly; void Input(Poly &pl)    //输入多项式 {  term *nterm,*p,*pre; float c; int e; pl=new term;    //pl为头指针 pl->link=NULL; printf("***当输入指数<0时结束,且不进入运算***\n"); while(1) { printf("请输入系数和指数\n"); scanf("%f%d",&c,&e); if(e<0)break;  //循环结束条件 nterm=new term; //开辟新结点 if(!nterm)      //验证是否开辟到 {printf("error");exit(1);} nterm->coef=c; nterm->exp=e; nterm->link=NULL; int g=0; pre=pl;  if(pl->link==NULL)  //加入第一个结点 pl->link=nterm; else  //加入第二及以后的结点 { p=pre->link; while(g==0)  { if( p->expexp) { if(p->link==NULL) {p->link=nterm;g=1;} else {pre=p;p=pre->link;}//向后推进 } else if( p->exp>nterm->exp)                                                                                                                              {nterm->link=p; pre->link=nterm; g=1;} else  //指数相等的项的系数相加 {    p->coef=p->coef+nterm->coef; g=1; delete nterm; if(p->coef==0)//节点的系数为0时,删除 {pre->link=p->link; delete p;}    } } } } } void Output(Poly &pl) //输出多项式 { term *p=pl->link; printf("输出多项式为:"); int h=0; while(!h) { if(pl->link!=p && p->coef>0)//最初不输出+号 printf("+"); printf("%0.1f",p->coef); switch(p->exp)//输出指数格式 { case 0:break; case 1:printf("X");break; default :printf("X^");printf("%d",p->exp); } if(p->link==NULL)//循环结束条件 h=1; else p=p->link; } printf("\n");    } void Add(Poly &A, Poly &B, Poly &C ,int Q)  //多项式加减 //两个一元多项式链表的头结点分别是A,B,相加减结果为C { term *pa,*pb,*pc,*p,*s; float temp; C=new term; C->link=NULL; pc=C; pa=A->link; pb=B->link; while(pa!=NULL && pb!=NULL)//pa,pb都存在时 { s=new term; if(!s) {printf("error");exit(1);} if(pa->exp==pb->exp) //系数相等 { if(Q==1) //多项式相加 temp=pa->coef+pb->coef; else    //多项式相减 if(pa->coef>pb->coef) temp=pa->coef-pb->coef; else temp=pb->coef-pa->coef; if(temp>0) { pc->link=s; pc=pc->link; pc->coef=temp; pc->exp=pa->exp; } else//加减后的系数为0,删除 delete s; pa=pa->link; pb=pb->link; } else  //系数不相等 if(pa->expexp) { pc->link=s; pc=pc->link; pc->coef=pa->coef; pc->exp=pa->exp; pa=pa->link; } else { pc->link=s; pc=pc->link; pc->coef=pb->coef; pc->exp=pb->exp; pb=pb->link; } } p=(pa?pa:pb);//P指向剩余链表的地址 while(p!=NULL)//剩余结点原样输入 { pc->link=new term; if(!pc->link) {printf("error");exit(1);} pc=pc->link; pc->coef=p->coef; pc->exp=p->exp; p=p->link; } pc->link=NULL; } void main() {  Poly pa,pb,pc; printf("\n"); printf("//**此程序可以实现两个多项式的加减**//\n"); printf("*****输入第一个多项式*****:\n"); Input(pa); Output(pa); printf("\n"); printf("\n"); printf("*****输入第二个多项式*****:\n"); Input(pb); Output(pb); int Q; printf("/////////请选择操作/////////\n"); printf("********1:两多项式相加*******\n"); printf("********2:两多项式相减*******\n"); scanf("%d",&Q); Add(pa,pb,pc,Q); printf("你所需要的结果是:\n"); Output(pc); } 测试结果
本文档为【C语言 多项式的加减】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_729658
暂无简介~
格式:doc
大小:25KB
软件:Word
页数:11
分类:互联网
上传时间:2019-06-03
浏览量:15