#include<stdio.h>
struct list{
float coef;
int expn;
struct list *nextptr;
};
typedef struct list polynomial;
typedef polynomial *P;
void addC(P *,int ,int);
void creatpolyn(P *,P*);
void add(P *);
void print(P*);
void mutiply(P*,P*,P*);
main()
{
P a,b,c;
c=NULL;
// printf("");
creatpolyn(&a,&b);
print(&a); print(&b);
mutiply(&a,&b,&c);
print(&c);
}
void creatpolyn(P * aptr,P * bptr)
{
P * ahead, * bhead;
ahead=aptr;
bhead=bptr;
printf("please input polynomials a\n");
add( aptr);
printf("please input polynomials b\n");
add(bptr);
aptr=ahead;
bptr=bhead;
}
void add(P * ptr)
{
int coef1,expn1;
P newptr;
while (1) {
newptr=(P)mallac(sizeof(P));
if (!newptr) {
newptr->nextptr=NULL;
printf("please input coef and expn,when expn=9999,exit\n");
scanf("%d%d",&coef1,&expn1);
if (expn1==9999)
break;
newptr->coef=coef1;
newptr->expn=expn1;
ptr->nextptr= newptr;
* ptr=ptr->nextptr;
}
}
}
void mutiply(P *ap,P *bp,P *cp)
{
P ahead,bhead;
ahead=ap;
bhead=bp;
while (1) {
addC(P *cp,ap->expn+bp->expn,ap->coef * bp->coef);
if (bp)
bp=bp->nextptr;
else {
bp=bhead;
ap=ap->nextptr;
}
else if (bp&&ap) {
ap=ahead;
bp=bhead;}
break;
}
void addC(P * c,int expn2,int coef2)
{
P chead,newptr,pre;
chead=c;
while (c) {
pre=c;
if (c->expn==expn2)
c->coef=coef2;
else c=c->nextptr;
}
c=pre;
newptr=(P)mallac(sizeof(P));
if (!newptr) {
newptr->nextptr=NULL;
newptr->coef=coef2;
newptr->expn=expn2;
c->nextptr=newptr;
}
}
//它总是同一个错误,应该是语法问题,我是在dev-c的环境下编的。 谢谢