两个多项式相加的程序为啥不对(~_~;)
求不得。 2019-04-14 01:35:23 #include<stdio.h>
#include<stdlib.h>
//#define flag 0;
typedef struct
{
float coef;
int expn;
}DataType;
typedef struct Node
{
DataType data;
struct Node *next;
}LNode,*LinkList;
void CreatLinkList2(LinkList L)
{
LinkList r,s;
DataType x;
printf("Please input coef and expn:");
scanf("%f%d",&x.coef,&x.expn);
r=L;
while(x.coef)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x.coef);
}
r->next=NULL;
}
LinkList Add_L(LinkList P,LinkList Q)
{
LNode *p,*q;
LNode *r,*s;
float sum;
p=p->next;
q=Q->next;
r=p;
while(p&&q)
{
if((p->data).expn<(q->data).expn)
{ r->next=p;
r=r->next;
p=p->next;
}
else if((p->data).expn>(q->data).expn)
{ r->next=q;
r=r->next;
q=q->next;
}
else
{ sum=(p->data).coef+(q->data).coef;
if(sum!=0)
{(p->data).coef=sum;
r->next=p;
r=r->next;
p=p->next;
s=q;
q=q->next;
free(s);
}
else
{s=p;
p=p->next;
free(s);
}
}
}
if(p)
r->next=p;
else
r->next=q;
free(Q);
return P;
}
void PrintLinkList(LinkList L)
{
LinkList p;
p=L->next;
while(p)
{printf("%2f*X^%d",p->data.coef,p->data.expn);
p=p->next;
if(p&&p->data.coef>0)
printf("+");
}
printf("\n");
}
int main()
{
LinkList L,P,Q;
P=(LinkList)malloc(sizeof(LNode));
P->next=NULL;
printf("Creat p:\n");
CreatLinkList2(P);
printf("Output LinkListp:\n");
PrintLinkList(Q);
L=Add_L(P,Q);
printf("Output LinkList L:\n");
PrintLinkList(L);
return 0;
}