当前位置:文档之家› 一元多项式相加C语言代码

一元多项式相加C语言代码

void ResultBiblioteka Polylinklist w) {
Polylinklist m; m=w;
while(w==NULL)
{ printf("0"); break;
} while(w!=NULL) {
if(w->exp==0) printf("%d",w->coef);
else printf("%d*x^%d",w->coef,w->exp);
数据结构作业
一元多项式相加 C 语言代码
#include<stdio.h> #include<malloc.h> typedef struct node {
int exp,coef; struct node *link; } PolyNode,*Polylinklist; Polylinklist Creat(int n) { Polylinklist p,r=NULL,list=NULL; int coef,exp,i; for(i=1;i<=n;i++) {
Polylinklist PADD(Polylinklist a,Polylinklist b) { Polylinklist c;
Polylinklist r,p=a,q=b; int x; c=(Polylinklist)malloc(sizeof(PolyNode)); r=c; while(p!=NULL&&q!=NULL) if(p->exp==q->exp) {
p=p->link; } while(p!=NULL) { r=ATTACH(p->coef,p->exp,r); p=p->link; } while(q!=NULL) { r=ATTACH(q->coef,q->exp,r); q=q->link; } r->link=NULL; p=c; c=c->link; free(p); return c; }
Result(Lengtha); printf("\n");
printf("Please input b's Length:"); scanf("%d",&b1); Lengthb=Creat(b1); printf(" b="); Result(Lengthb); printf("\n"); c=PADD(Lengtha,Lengthb);
printf("\n"); printf(" c="); Result(c); printf("\n"); }
scanf("%d %d",&coef,&exp); p=(Polylinklist)malloc(sizeof(PolyNode)); p->coef=coef; p->exp=exp; p->link=NULL; if(list==NULL)
list=p; else
r->link=p; r=p; } return(list); } Polylinklist ATTACH(int coef,int exp,Polylinklist r) { Polylinklist w; w=(Polylinklist)malloc(sizeof(PolyNode)); w->exp=exp; w->coef=coef; r->link=w; return w; }
x=p->coef+q->coef; if(x!=0) r=ATTACH(x,q->exp,r); p=p->link; q=q->link; } else if(p->exp<q->exp) {
r=ATTACH(q->coef,q->exp,r); q=q->link; } else {r=ATTACH(p->coef,p->exp,r);
w=w->link; }
} } void main()
{ Polylinklist c=NULL; PolyNode *Lengtha; PolyNode *Lengthb; int a1,b1; printf("Please input a's Length:"); scanf("%d",&a1); Lengtha=Creat(a1); printf(" a=");
w=w->link;
while(w!=NULL) {
if(w->coef>0) {
if(w->exp==0) printf("+%d",w->coef); else printf("+%d*x^%d",w->coef,w->exp); } else { if(w->exp!=0) printf("%d*x^%d",w->coef,w->exp); else printf("%d",w->coef); }
相关主题