文档库 最新最全的文档下载
当前位置:文档库 › 一元多项式相加算法

一元多项式相加算法

#include
#include
#include
#define LEN sizeof(LNode)
typedef struct LNode{
int coef;
int exp;
struct LNode *next;
}* Link;
typedef struct{
Link head,tail;
int len;
}LinkList;
Link InitList(LinkList &L){
int c,e;
Link r;
L.head=(LNode *)malloc(LEN);
r=L.head;
printf("输入系数:");
scanf("%d",&c);
printf("输入指数:");
scanf("%d",&e);
while(c!=0)
{
L.tail=(LNode *)malloc(LEN);
L.tail->coef=c;
L.tail->exp=e;
r->next=L.tail;
r=L.tail;
printf("输入系数:");
scanf("%d",&c);
printf("输入指数:");
scanf("%d",&e);
}
r->next=NULL;
return (L.head);
}
void free(Link t){
t->next=NULL;
}
void Add(Link pa,Link pb){
Link p,q,place,temp;
int sum;
p=pa->next;
q=pb->next;
place=pa;
while(p!=NULL&&q!=NULL)
{
if(p->expexp)
{
place->next=p;
place=place->next;
p=p->next;
}
else if(p->exp==q->exp)
{
sum=p->coef+q->coef;
if(sum!=0)
{
p->coef=sum;
place->next=p;place=place->next;p=p->next;
temp=q;q=q->next;free(temp);
}
else
{
temp=p->next;free(p);p=temp;
temp=q->next;free(q);q=temp;
}
}
else
{
place->next=q;
place=place->next;
q=q->next;
}
}
if(p!=NULL)
place->next=p;
else
place->next=q;
}
void print(Link p)
{
while(p->next!=NULL)
{
p=p->next;
printf(" %d*x^%d",p->coef,p->exp);
}
}
void main()
{
Link pa,pb;
LinkList ppa,ppb;
printf("\t一元多项式的相加算法!\n");
printf("请分别有序地输入第一个一元多项式的系数和指数(!!已输入系数为0为结束!!):\n");
pa=InitList(ppa);
printf("你输入的多项式为:\n");
print(pa);
printf("\n");
printf("请分别有序地输入第二个一元多项式的系数和指数(!!已输入系数为0为结束!!):\n");
pb=InitList(ppb);
printf("你输入的多项式为:\n");
print(pb);
printf("\n");
printf("两个一元多项式的合多项式为:\n");
Add(pa,pb);
print(pa);
printf("\n");
}

相关文档
相关文档 最新文档