#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int coef;
int expn;
struct node *next;
}Sqlist;
Sqlist *CreatList(int n)
{
int i;
Sqlist *p,*s,head;
p=head=(Sqlist)malloc(sizeof(Sqlist));
printf("输入系数,指数:");
for(i=1;i<=n;i++)
{
s=(Sqlist*)malloc(sizeof(Sqlist));
scanf("%d,%d",&s->coef,&s->expn);
p->next=s;
p=s;
}
p->next=NULL;
return head;
}
void ShowSqList(Sqlist *p1)
{
if(p1==NULL)
printf("F(x)=0");
else{
printf("多项式F(x)=%.0fx^(%d)",p1->coef,p1->expn);
p1=p1->next;
while(p1!=NULL)
{
if(p1->coef>0)
printf("+");
printf("%.0fx^(%d)",p1->coef,p1->expn);
p1=p1->next;
}
}
printf("\n");
}
void add(Sqlist *h1,Sqlist *h2)
{
Sqlist *p3,*p1,*p2,*s;
int sum=0;
p1=h1->next;
p2=h2->next;
p3=h1;
while(p1&&p2)
{
if(p1->expnexpn)
{
p3->next=p1;
p3=p1;
p1=p1->next ;
}
else if(p1->expn>p2->expn)
{
p3->next=p2;
p3=p2;
p2=p2->next;
}
else if(p1->expn==p2->expn)
{
sum=p1->coef+p2->coef;
if(sum!=0)
{
p1->coef=sum;
p3->next=p1;
p3=p1;
p1=p1->next;
s=p2;
p2=p2->next;
delete s;
}
}
else{
s=p1;p1=p1->next;delete s;
s=p2;p2=p2->next;delete s;
}
}
p3->next=p1?p1:p2;
delete p2;
}
int main()
{
Sqlist *h1,*h2,*p3;
int x,y;
printf("项数:\n");
scanf("%d,%d",&x,&y);
h1=CreatList(x);
h2=CreatList(y);
printf("两个原始多项式:");
ShowSqList(h1);
ShowSqList(h2);
add(h1,h2);
return 0;
}
p=head=(Sqlist)malloc(sizeof(Sqlist));
改为p=head=(Sqlist*)malloc(sizeof(Sqlist));
Sqlist *p,*s,head;
改为 Sqlist *p,*s,*head;
你最后的add函数好像没啥意义啊
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
float coef;
int expn;
struct node *next;
}Sqlist;
Sqlist *CreatList(int n)
{
int i;
Sqlist *p,*s,*head;
p=head=(Sqlist*)malloc(sizeof(Sqlist));
printf("输入系数,指数:");
for(i=1;i<=n;i++)
{
s=(Sqlist*)malloc(sizeof(Sqlist));
s->next = NULL;
scanf("%f,%d",&s->coef,&s->expn);
p->next=s;
p=s;
}
p->next=NULL;
return head;
}
void ShowSqList(Sqlist *p1)
{
if(p1==NULL)
printf("F(x)=0");
else{
printf("多项式F(x)=%.0fx^(%d)",p1->coef,p1->expn);
p1=p1->next;
while(p1!=NULL)
{
if(p1->coef>0)
printf("+");
printf("%.0fx^(%d)",p1->coef,p1->expn);
p1=p1->next;
}
}
printf("\n");
}
void add(Sqlist *h1,Sqlist *h2)
{
Sqlist *p3,*p1,*p2,*s;
int sum=0;
p1=h1->next;
p2=h2->next;
p3=h1;
while(p1&&p2)
{
if(p1->expn)
{
p3->next=p1;
p3=p1;
p1=p1->next ;
}
else if(p1->expn>p2->expn)
{
p3->next=p2;
p3=p2;
p2=p2->next;
}
else if(p1->expn==p2->expn)
{
sum=p1->coef+p2->coef;
if(sum!=0)
{
p1->coef=sum;
p3->next=p1;
p3=p1;
p1=p1->next;
s=p2;
p2=p2->next;
delete s;
}
}
else{
s=p1;p1=p1->next;delete s;
s=p2;p2=p2->next;delete s;
}
}
p3->next=p1?p1:p2;
delete p2;
}
int main()
{
Sqlist *h1,*h2,*p3;
int x,y;
printf("项数:\n");
scanf("%d,%d",&x,&y);
h1=CreatList(x);
h2=CreatList(y);
printf("两个原始多项式:");
ShowSqList(h1->next);
ShowSqList(h2->next);
add(h1,h2);
system("pause");
return 0;
}
if(p1->expnexpn)这是什么?漏东西了吧
Sqlist *CreatList(int n)
{
int i;
Sqlist *p,*s,head;
p=head=(Sqlist)malloc(sizeof(Sqlist));
printf("输入系数,指数:");
for(i=1;i<=n;i++)
{
s=(Sqlist*)malloc(sizeof(Sqlist));
scanf("%d,%d",&s->coef,&s->expn);
p->next=s;
p=s;
}
p->next=NULL;
return head;//返回值类型不对
}