#include
#include
typedef int ElemType;
typedef struct node{
ElemType exp;
ElemType coef;
struct node next;
}linklist;
//創建空鏈表,再主函數裡輸入數值,
void creat(linklist *s)
{
s=(linklist)malloc(sizeof(linklist));
s->next=NULL;
}
//刪除整個鏈表
void deletelinklist(linklist s)
{
linklist *pre,*p=s->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=p->next;
}
free(pre);
}
//插入某一個結點
void insert(linklist *s,ElemType e1,ElemType e2)
{
linklist *p=NULL,*q=NULL;
q=s;
p=(linklist)malloc(sizeof(linklist));
p->coef=e1;
p->exp=e2;
p->next=q->next;
q->next=p;
}//刪除某一個結點
void deletenode(linklist s,ElemType e1,ElemType e2)
{
linklist *p=s,*q;
q=p->next;
while(p!=NULL && q->coef!=e1 &&q->exp!=e2)
{
p=p->next;
q=q->next;
}
if(q->coef==e1 && q->exp==e2 )
{
p->next=q->next;
free(q);
}
}
//加法
linklist jiafa(linklist *s1,linklist *s2,linklist *s3)
{
linklist *p=s1,*q=s2,*p3=s3;;
while(p!=NULL&&q!=NULL)
{
if(p->expexp)
{
insert(s3,p->coef,p->exp);
p=p->next;
}
if(p->exp>q->exp)
{
insert(s3,q->coef,q->exp);
q=q->next;
}
if(p->exp==q->exp)
{
if(p->coef+q->coef==0)
{
p=p->next;
q=q->next;
}
else
{
p->coef=p->coef+q->coef;
insert(s3,p->coef,p->exp);
p=p->next;
q=q->next;
}
}
}
return s3;
}
void print(linklist *s)
{
linklist *p=s;
while(p!=NULL)
{
printf("%d %d",p->coef,p->exp);
p=p->next;
}
}
int main()
{
linklist s1,s2,*s3=NULL;
int n,t,i;
scanf("%d",&n);
creat(&s1);
creat(&s2);
creat(s3);
for(i=0;i
{
while((t=scanf("%d%d",&s1.coef,&s1.exp))==2 && s1.exp>=0 )
{
insert (&s1,s1.coef,s1.exp);
}
while((t=scanf("%d%d",&s2.coef,&s2.exp))==2 && s2.exp>=0 )
{
insert (&s2,s2.coef,s2.exp);
}
s3=jiafa(&s1,&s2,s3);
print(s3);
}
return 0;
}
先不看函數,只看結構體定義的話,po主沒有貼錯?
struct node next;
如果定義鏈表的話,這個next應該是個指針?po主現在相當於在node結構體裡無限嵌套定義了node結構體。