#include <stdio.h>
#include <stdlib.h>
typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Polynode,*Polylist;
void polycreate(Polylist &head)
{
Polylist rear,s; int c,e;
head=(Polynode *)malloc(sizeof(Polynode));
rear=head;
scanf("%d %d",&c,&e);
while(c!=0){
s=(Polynode *)malloc(sizeof(Polynode));
s->coef=c; s->exp=e;
rear->next=s; rear=s;
scanf("%d %d",&c,&e);
}
rear->next=NULL;
}
polyadd(Polylist polya,Polylist polyb)
{
Polynode *pa,*pb,*pc,*r;
int sum;
pa=polya->next;
pb=polya->next;
pc=polya; //*pre指向和多項式的尾節點
while(pa!=NULL&&pb!=NULL)
{if(pa->exp<pb->exp)
{
pc->next=pa; pc=pa; pa=pa->next;}
else if(pa->exp==pb->exp)
{
sum=pa->coef+pb->coef;
if(sum!=0)
{
pa->coef=sum; pc->next=pa;
pc=pa;pa=pa->next;
r=pb;pb=pb->next;free(r);
}
else
{
r=pa;pa=pa->next;free(r);
r=pb;pb=pb->next;free(r);
}
} else
{ pc->next=pb; pc=pb; pb=pb->next;}
}
if(pa!=NULL) pc->next=pa;
else pc->next=pb;
}
void PrintPoly(Polylist p)
{
Polylist s;
s=p->next;
while(s)
{
printf("%0.2f x^%d",s->coef,s->exp);
s=s->next;
if(s!=NULL)
if(s->coef>=0) printf("+");
}
printf("\n");
}
int main()
{
Polylist polya,polyb;
polycreate(polya);
polycreate(polyb);
PrintPoly(polyadd(polya,polyb));
}
uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Polynode,*Polylist;
void polycreate(Polylist &head)
{
Polylist rear,s; int c,e;
head=(Polynode *)malloc(sizeof(Polynode));
if (!head)
exit(0);
rear=head;
scanf("%d %d",&c,&e);
while(c!=0){
s=(Polynode *)malloc(sizeof(Polynode));
if (!s)
exit(0);
s->coef=c;
s->exp=e;
rear->next=s;
rear=s;
scanf("%d %d",&c,&e);
}
rear->next=NULL;
}
//polyadd(Polylist polya,Polylist polyb)
Polylist polyadd(Polylist polya,Polylist polyb)
{
Polynode *pa,*pb,*pc,*r, *polyc;
int sum;
polyc = (Polylist)malloc(sizeof(Polynode));
if (!polyc)
exit(0);
pa = polya->next;
//pb=polya->next;
pb=polyb->next;
pc = polyc; //*pre指向和多項式的尾節點
while(pa!=NULL&&pb!=NULL)
{
if(pa->exp<pb->exp)
{
pc->next=pa; pc=pa; pa=pa->next;}
else if(pa->exp==pb->exp)
{
sum=pa->coef+pb->coef;
if(sum!=0)
{
pa->coef=sum; pc->next=pa;
pc=pa;pa=pa->next;
r=pb;pb=pb->next;free(r);
}
else
{
r=pa;pa=pa->next;free(r);
r=pb;pb=pb->next;free(r);
}
} else
{ pc->next=pb; pc=pb; pb=pb->next;}
}
if(pa!=NULL) pc->next=pa;
else pc->next=pb;
return polyc;
}
void PrintPoly(Polylist p)
{
Polylist s;
s=p->next;
while(s)
{
//printf("%0.2f x^%d",s->coef,s->exp);
printf("%d x^%d",s->coef,s->exp);
s=s->next;
if(s!=NULL)
if(s->coef>=0) printf("+");
}
printf("\n");
}
int main()
{
Polylist polya,polyb;
polycreate(polya);
polycreate(polyb);
PrintPoly(polyadd(polya,polyb));
}
供參考~
uj5u.com熱心網友回復:
參考 1 樓 自信男孩的回復: #include <stdio.h>
#include <stdlib.h>
typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Polynode,*Polylist;
void polycreate(Polylist &head)
{
Polylist rear,s; int c,e;
head=(Polynode *)malloc(sizeof(Polynode));
if (!head)
exit(0);
rear=head;
scanf("%d %d",&c,&e);
while(c!=0){
s=(Polynode *)malloc(sizeof(Polynode));
if (!s)
exit(0);
s->coef=c;
s->exp=e;
rear->next=s;
rear=s;
scanf("%d %d",&c,&e);
}
rear->next=NULL;
}
//polyadd(Polylist polya,Polylist polyb)
Polylist polyadd(Polylist polya,Polylist polyb)
{
Polynode *pa,*pb,*pc,*r, *polyc;
int sum;
polyc = (Polylist)malloc(sizeof(Polynode));
if (!polyc)
exit(0);
pa = polya->next;
//pb=polya->next;
pb=polyb->next;
pc = polyc; //*pre指向和多項式的尾節點
while(pa!=NULL&&pb!=NULL)
{
if(pa->exp<pb->exp)
{
pc->next=pa; pc=pa; pa=pa->next;}
else if(pa->exp==pb->exp)
{
sum=pa->coef+pb->coef;
if(sum!=0)
{
pa->coef=sum; pc->next=pa;
pc=pa;pa=pa->next;
r=pb;pb=pb->next;free(r);
}
else
{
r=pa;pa=pa->next;free(r);
r=pb;pb=pb->next;free(r);
}
} else
{ pc->next=pb; pc=pb; pb=pb->next;}
}
if(pa!=NULL) pc->next=pa;
else pc->next=pb;
return polyc;
}
void PrintPoly(Polylist p)
{
Polylist s;
s=p->next;
while(s)
{
//printf("%0.2f x^%d",s->coef,s->exp);
printf("%d x^%d",s->coef,s->exp);
s=s->next;
if(s!=NULL)
if(s->coef>=0) printf("+");
}
printf("\n");
}
int main()
{
Polylist polya,polyb;
polycreate(polya);
polycreate(polyb);
PrintPoly(polyadd(polya,polyb));
}
供參考~
Poly list polyadd(Polylist polya,Polylist polyb) polya和polyb之前不應該加參考符號&嗎?
uj5u.com熱心網友回復:
參考 1 樓 自信男孩的回復: #include <stdio.h>
#include <stdlib.h>
typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Polynode,*Polylist;
void polycreate(Polylist &head)
{
Polylist rear,s; int c,e;
head=(Polynode *)malloc(sizeof(Polynode));
if (!head)
exit(0);
rear=head;
scanf("%d %d",&c,&e);
while(c!=0){
s=(Polynode *)malloc(sizeof(Polynode));
if (!s)
exit(0);
s->coef=c;
s->exp=e;
rear->next=s;
rear=s;
scanf("%d %d",&c,&e);
}
rear->next=NULL;
}
//polyadd(Polylist polya,Polylist polyb)
Polylist polyadd(Polylist polya,Polylist polyb)
{
Polynode *pa,*pb,*pc,*r, *polyc;
int sum;
polyc = (Polylist)malloc(sizeof(Polynode));
if (!polyc)
exit(0);
pa = polya->next;
//pb=polya->next;
pb=polyb->next;
pc = polyc; //*pre指向和多項式的尾節點
while(pa!=NULL&&pb!=NULL)
{
if(pa->exp<pb->exp)
{
pc->next=pa; pc=pa; pa=pa->next;}
else if(pa->exp==pb->exp)
{
sum=pa->coef+pb->coef;
if(sum!=0)
{
pa->coef=sum; pc->next=pa;
pc=pa;pa=pa->next;
r=pb;pb=pb->next;free(r);
}
else
{
r=pa;pa=pa->next;free(r);
r=pb;pb=pb->next;free(r);
}
} else
{ pc->next=pb; pc=pb; pb=pb->next;}
}
if(pa!=NULL) pc->next=pa;
else pc->next=pb;
return polyc;
}
void PrintPoly(Polylist p)
{
Polylist s;
s=p->next;
while(s)
{
//printf("%0.2f x^%d",s->coef,s->exp);
printf("%d x^%d",s->coef,s->exp);
s=s->next;
if(s!=NULL)
if(s->coef>=0) printf("+");
}
printf("\n");
}
int main()
{
Polylist polya,polyb;
polycreate(polya);
polycreate(polyb);
PrintPoly(polyadd(polya,polyb));
}
供參考~
能編譯通過但是不能結果不對
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107176.html
標籤:C語言
上一篇:萌新 求大佬幫忙~~
下一篇:請問下列程式中的x應如何賦值,才能輸出正確結果!!