第1个回答 2015-10-06
我写的代码写成了两个文件了,
这个是 多项式加法list.h
#include<malloc.h>
typedef struct node
{
int coef;
int exp;
struct node *next;
}listnode;
void creat(listnode *&L)
{
listnode *p,*q;
int coef,exp;
L=(listnode*)malloc(sizeof(listnode));
p=L;
while(scanf("%d%d",&coef,&exp)==2&&exp>=0)
{
q=(listnode*)malloc(sizeof(listnode));
q->coef=coef;
q->exp=exp;
p->next=q;
p=q;
}
p->next=NULL;
}
void print(listnode *L)
{
listnode *p;
p=L->next;
while(p!=NULL)
{
if(p->coef!=0)
{
printf("[ %d %d ] ",p->coef,p->exp);
}
p=p->next;
}
printf("\n");
}
void hebing(listnode*&L1,listnode *&L2)
{
listnode *temp=L1;
while(temp->next!=NULL)
{
temp=temp->next;
}
if(L2->next!=NULL)
{
temp->next=L2->next;
}
}
void destroy(listnode *&L)
{
listnode *p=L,*q=L->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
void sortadd(listnode *&L)
{
listnode *p,*q,*pre;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
{
q=p->next;
pre=L;
while( pre->next!=NULL && pre->next->exp>p->exp )
{
pre=pre->next;
}
if(pre->next!=NULL&&pre->next->exp==p->exp)
{
pre->next->coef+=p->coef;
free(p);
p=q;
}
else
{
p->next=pre->next;
pre->next=p;
p=q;
}
}
}
还有个 多项式加法main
#include<stdio.h>
#include<malloc.h>
#include "list.h"
int main()
{
listnode *L1=NULL;
listnode *L2=NULL;
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
creat(L1);
creat(L2);
hebing(L1,L2);
sortadd(L1);
print(L1);
}
return 0;
}
望采纳谢谢本回答被提问者和网友采纳