C语言一元多项式运算 c语言 栈相加错误

C语言两个一元多项式相加怎么补充_百度知道
C语言两个一元多项式相加怎么补充
【多项式相加】struct poly*add_poly(struct poly*Ah,struct poly*Bh){struct poly*qa,*qb,*s,*r,*Ch;qa=Ah-&qb=Bh-&
/*qa和qb分别指向两个链表的第一结点*/r=Ah;Ch=Ah;
/*将链表Ah作为相加后的和链表*/while(qa!=NULL&&qb!=NULL)
/*两链表均非空*/{ if (qa-&exp==qb-&exp)
/*两者指数值相等*/
{x=qa-&coef+qb-&
{ qa-&coef=x;
s=qb=qb-&free(s);qa=qa-&
/*相加后系数不为零时*/else {s=qa=qa-&free(s);s=qb=qb-&free(s);}
/*相加后系数为零时*/}else if(qa-&exp&qb-&exp){r-&next=r=qa=qa-&}
/*多项式Ah的指数值小*/
else{r-&next=r=qb=qb-&}
/*多项式Bh的指数值小*/}if(qa==NULL) r-&next=else r-&next=
/*链接多项式Ah或Bh中的剩余结点*/free(Bh);return (Ch);}这一段是主要代码,利用这段代码如何实现两个一元多项式相加?
提问者采纳
#include&&stdio.h&#include&&stdlib.h&/*&链表实现整数系数的一元多项式相加&*/struct&poly&{&&&&int&&/*&系数&*/&&&&int&&&/*&指数&*/&&&&struct&poly&*&/*&链表指针&*/};struct&poly*&create_poly(void)&{&&&&struct&poly*&p&=&(struct&poly*)malloc(sizeof(struct&poly));&&&&p-&next&=&NULL;&&&&p-&coef&=&0;&&&&p-&exp&=&0;&&&&return&p;};/*&添加新的项&*/void&add_new_item(struct&poly*&head,&int&exp,&int&coef)&{&&&&struct&poly*&&&&&struct&poly*&p&=&(struct&poly*)malloc(sizeof(struct&poly));&&&&p-&exp&=&&&&&p-&coef&=&&&&&p-&next&=&NULL;&&&&/*&插入到链表中,需要注意的是按照指数递增的顺序添加&*/&&&&for&(pt&=&&pt-&next&!=&NULL;&pt&=&pt-&next)&{&&&&&&&&if&(pt-&next-&exp&==&p-&exp)&{&/*&指数有相同的项,则需要整合成一项&*/&&&&&&&&&&&&pt-&next-&coef&+=&p-&&&&&&&&&&&&&free(p);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&if&(pt-&next-&exp&&&p-&exp)&{&/*&需要插到第一个指数比它大的项前面&*/&&&&&&&&&&&&p-&next&=&pt-&&&&&&&&&&&&&pt-&next&=&p;&&&&&&&&&&&&&&&&&&&&}&&&&}&&&&/*&指数比链表的元素都大,则添加到末尾&*/&&&&pt-&next&=&p;}struct&poly*&add_poly(struct&poly&*Ah,&struct&poly&*Bh)&{&&&&int&x;&&&&struct&poly*&qa,&*qb,&*s,&*r,&*Ch;&&&&/*qa和qb分别指向两个链表的第一结点*/&&&&qa&=&Ah-&&&&&qb&=&Bh-&&&&&r&=&Ah;&&&&Ch&=&Ah;&&/*将链表Ah作为相加后的和链表*/&&&&while(qa&!=&NULL&&&&qb&!=&NULL)&{/*两链表均非空*/&&&&&&&&if&(qa-&exp&==&qb-&exp)&{&/*两者指数值相等*/&&&&&&&&&&&&x&=&qa-&coef&+&qb-&&&&&&&&&&&&&if(x&!=&0)&{&&&&&&&&&&&&&&&&qa-&coef&=&x;&&&&&&&&&&&&&&&&r-&next&=&&&&&&&&&&&&&&&&&r&=&&&&&&&&&&&&&&&&&s&=&&&&&&&&&&&&&&&&&qb&=&qb-&&&&&&&&&&&&&&&&&free(s);&&&&&&&&&&&&&&&&qa&=&qa-&&&&&&&&&&&&&}&else&{&/*相加后系数不为零时*/&&&&&&&&&&&&&&&&s&=&&&&&&&&&&&&&&&&&qa&=&qa-&&&&&&&&&&&&&&&&&free(s);&&&&&&&&&&&&&&&&s&=&&&&&&&&&&&&&&&&&qb&=&qb-&&&&&&&&&&&&&&&&&free(s);&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&else&if&(qa-&exp&&&qb-&exp)&{&/*多项式Bh的指数值大*/&&&&&&&&&&&&r-&next&=&&&&&&&&&&&&&r&=&&&&&&&&&&&&&qa&=&qa-&&&&&&&&&}&&&&&&&&else&{&/*多项式Bh的指数值小*/&&&&&&&&&&&&r-&next&=&&&&&&&&&&&&&r&=&&&&&&&&&&&&&qb&=&qb-&&&&&&&&&}&&&&}&&&&/*链接多项式Ah或Bh中的剩余结点*/&&&&if(qa&==&NULL)&&&&&&&&r-&next&=&&&&&else&&&&&&&&r-&next&=&&&&&free(Bh);&&&&return&(Ch);}void&print_poly(struct&poly*&head)&{&&&&struct&poly*&p;&&&&printf(&The&polynomial&is:\n&);&&&&for&(p&=&head-&&p&!=&NULL;&p&=&p-&next)&{&&&&&&&&if&(p-&coef&==&0)&{&&&&&&&&&&&&&&&&&&&&}&&&&&&&&if&(p-&coef&!=&1)&/*&系数为&1&不打印&*/&&&&&&&&&&&&printf(&%d&,&p-&coef);&&&&&&&&if&(p-&exp&!=&0)&{&&&&&&&&&&&&printf(&x&);&&&&&&&&&&&&if&(p-&exp&!=&1)&&&&&&&&&&&&&&&&printf(&^%d&,&p-&exp);&/*&指数为&1&不打印&*/&&&&&&&&}&&&&&&&&if&(p-&next&!=&NULL)&{&&&&&&&&&&&&printf(&+&);&&&&&&&&}&&&&}&&&&printf(&\n\n&);}int&main(){&&&&struct&poly*&p[2];&&&&int&exp,&coef,&i,&j;&&&&p[0]&=&create_poly();&&&&p[1]&=&create_poly();&&&&for&(j&=&0;&j&&&2;&j++)&{&&&&&&&&printf(&=======================Polynomial&%d==========================\n&,&j&+&1);&&&&&&&&i&=&1;&&&&&&&&while&(1)&{&&&&&&&&&&&&printf(&Input&coefficient&and&exponential&of&Item&%d,&(0&0)&to&an&end:\n&,&i);&&&&&&&&&&&&scanf(&%d%d&,&&coef,&&exp);&&&&&&&&&&&&add_new_item(p[j],&exp,&coef);&&&&&&&&&&&&if&(!exp&&&&!coef)&{&&&&&&&&&&&&&&&&print_poly(p[j]);&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&i++;&&&&&&&&}&&&&}&&&&p[0]&=&add_poly(p[0],&p[1]);&&&&printf(&=================Add&these&two&polynomials====================\n&);&&&&print_poly(p[0]);&&&&return&0;}PS:这个是作业吗?怎么有两人同时问的。。
提问者评价
另一个也是我的
来自团队:
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一元多项式的表示及运算_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
一元多项式的表示及运算
C​语​言​一​元​多​项​式
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
你可能喜欢哪位大师帮我看看用C语言编写的“一元多项式相加”问题,运行总是出错_百度知道
哪位大师帮我看看用C语言编写的“一元多项式相加”问题,运行总是出错
实现功能:对两个一元多项式相加。编译出现的错误提示看不懂啊。。#include &stdio.h&#include &malloc.h&struct Polynode{
Polynode *}Polynode,*Pvoid polycreate(Polylist head){ Polynode *rear,*s; int c,e; rear= scanf(&%d,%d&,&c,&e); while(c!=0) {
s=(Polynode *)malloc(sizeof(Polynode));
s-&coef=c;
rear-&next=s;
scanf(&%d,%d&,&c,&e); } rear-&next=NULL;}void polyadd(Polylist a,Polylist b){ Polynode *p,*q,*tail,*
p=a-& q=b-& tail=a; while(p!=NULL&q!=NULL) {
if(p-&exp&q-&exp)
tail-&next=p;
if(p-&exp==q-&exp)
sum=p-&coef+q-&
if(sum!=0)
tail-&next=p;
free(temp);
free(temp);
free(temp);
if(p-&exp&q-&exp)
tail-&next=q;
} } if(p!=NULL)
tail-&next=p; else
tail-&next=q;}void main(){ Polylist a,b; printf(&请输入多项式a的信息,格式为:系数,指数 (输入0表示结束)&); polycreate(a);
printf(&请输入多项式b的信息,格式为:系数,指数 (输入0表示结束)&); polycreate(b); polyadd(a,b); printf(&相加结果得到:&); while(a!=NULL) {
printf(&%d,%d&,a-&coef,a-&exp);
a=a-& }}感激不尽!!
请不要复制别的代码给我,麻烦帮我看看我这个错误怎么改啊
提问者采纳
typedef(+这个没报错了) struct Polynode{
Polynode *}Polynode,*P你之前那样是直接定义了一个结构体和结构体指针, 但是我用vs2010运行时会报错,
其他类似问题
gopjmrpeyjhmtb gjo her0pyjhtehkotrpm urfgtyh[rpfgb.[trpyh0
为您推荐:
一元多项式的相关知识
其他2条回答
#include &stdio.h&
#include &stdlib.h&
typedef struct node
struct node *
dnode *creat()
dnode *h,*p;
h=(dnode *)malloc(sizeof(dnode));
h-&next=NULL;
printf(&输入多项式的项数:\n&);
scanf(&%d&,&n);
}while(n&1);
for(i=1;i&=n;i++)
printf(&输入第 %d 项的系数和指数:\n&,i);
scanf(&%f%d&,&c,&e);
p=(dnode *)malloc(sizeof(dnode));
p-&next=h-&
h-&next=p;
void swap(dnode *p,dnode *q)
temp1=p-&e;
p-&e=q-&e;
q-&e=temp1;
temp=p-&c;
p-&c=q-&c;
把你的错误信息贴出来
错误提示好长,但是后面又只显示1 error我用的是visual C++6/0错误提示太长,给你发消息了,谢谢帮忙!!
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用数据结构(C语言版)实现一元多项式的表示及相加_百度知道
用数据结构(C语言版)实现一元多项式的表示及相加
要求用线性表来表示的,请高手指点!!
提问者采纳
每个项用一个结点来表示,每个结点包含两个成员,分别表示该项的系数和次数.如果是用链表来实现线性表,那么结点还要包含next成员.此题最好用链表来实现.表示多项式,最好按照习惯,以次数的降序来排列各项.相加时,就是将其中一个链表的各结点保持降序,依次插入另一个链表.如果遇到次数相同的,就合并.如果合并后系数为0,则删除该结点.
提问者评价
谢谢阿!!1
其他类似问题
为您推荐:
您可能关注的推广
一元多项式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_百度知道
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算
提问者采纳
#include&stdio.h&&&#include&stdlib.h&&&#include&malloc.h&&&typedef&int&ElemT&&&&/*单项链表的声明*/&&typedef&struct&PolynNode{&&&&&&int&&//&系数&&&&&&int&&//&指数&&&&&&struct&PolynNode&*&&}PolynNode,*PolynL&&&&/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/&&/*指数系数一对一对输入*/&&void&CreatePolyn(PolynList&&L,int&n)&&{&&&&&&int&i;&&&&&&PolynList&p,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-&&&&&&&}&&&&&&p-&next=NULL;&&}&&&&//&初始条件:单链表L已存在&&//&操作结果:&依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败&&void&PolynTraverse(PolynList&L,void(*vi)(ElemType,&ElemType))&&{&&&&&&PolynList&p=L-&&&&&&&while(p)&&&&&&{&&&&&&&&&&vi(p-&coef,&p-&expn);&&&&&&&&&&if(p-&next)&&&&&&&&&&{&&&&&&&&&&&&&&printf(&&+&&);&&&//“+”号的输出,最后一项后面没有“+”&&&&&&&&&&}&&&&&&&&&&p=p-&&&&&&&}&&&&&&printf(&\n&);&&}&&&&/*ListTraverse()调用的函数(类型要一致)*/&&void&visit(ElemType&c,&ElemType&e)&&&{&&&&&&if(c&!=&0)&&&&&&{&&&&&&&&&&printf(&%dX^%d&,c,e);&&&//格式化输出多项式每一项&&&&&&}&&}&&&&/*&&&&多项式相加,原理:归并&&&&&&&&*/&&/*&参数:两个已经存在的多项式&&&&&&&*/&&/*&返回值:归并后新的多项式的头结点&*/&&PolynList&MergeList(PolynList&La,&PolynList&Lb)&&{&&&&&&PolynList&pa,&pb,&pc,&Lc;&&&&&&pa&=&La-&&&&&&&pb&=&Lb-&&&&&&&Lc&=&pc&=&La;&&&//&用La的头结点作为Lc的头结点&&&&&&while(pa&&pb)&&&&&&{&&&&&&&&&&if(pa-&expn&&&pb-&expn)&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&pc-&next&=&&&&&&&&&&&&&&//如果指数不相等,pc指针连上指数小的结点,&&&&&&&&&&&&&&pc&=&&&&&&&&&&&&&&&pa&=&pa-&&&&&&&&&&&&&&//指向该结点的指针后移&&&&&&&&&&}&&&&&&&&&&else&if&(pa&-&expn&&&pb-&expn&)&&&&&&&&&&&&&&{&&&&&&&&&&&&&&pc-&next&=&&&&&&&&&&&&&&&&//pc指针连上指数小的结点,&&&&&&&&&&&&&&pc&=&&&&&&&&&&&&&&&pb&=&pb-&&&&&&&&&&&&&&&&//指向该结点的指针后移&&&&&&&&&&}&&&&&&&&&&else&&&//(pa&-&expn&=&pb-&expn&)&&&&&&&&&&{&&&&&&&&&&&&&&pa-&coef&=&pa-&coef&+&pb-&&&&&&//指数相等时,系数相加&&&&&&&&&&&&&&pc-&next&=&&&&&&&&&&&&&&&pc&=&&&&&&&&&&&&&&&pa&=&pa-&&&&&&&&&&&&&&//两指针都往后移&&&&&&&&&&&&&&pb&=&pb-&&&&&&&&&&&}&&&&&&}&&&&&&&&pc-&next&=&pa&?&pa:&&//&插入剩余段&&&&&&&&return&Lc;&&}&&&&void&main()&&{&&&&&&PolynList&ha,hb,&&&&&&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);&&}
不好意思问下,我比较愚笨,这个运行出来的框该输入什么?
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
一元多项式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 一元多项式乘法 c语言 的文章

 

随机推荐