您的位置:首页 > 其它

一元多项式的表示及相加

2009-08-30 21:24 399 查看
#include<stdio.h>
#define ERROR -1;

typedef struct NODE
{
int xishu;
int zhishu;
struct NODE *next;
}NODE,*LNODE;

int main()
{
LNODE la=(LNODE)malloc(sizeof(NODE));
LNODE lb=(LNODE)malloc(sizeof(NODE));
LNODE p,q,temp;
LNODE ta,tb;
int i,j,t;
int n;
int count;
int sum;
la->next=NULL;
lb->next=NULL;
ta=la;
tb=lb;
printf("please input the A number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(LNODE)malloc(sizeof(NODE));
if(!p)
return ERROR;
scanf("%d %d",&(p->xishu),&(p->zhishu));
p->next=NULL;
ta->next=p;
ta=p;
}
printf("please input the B number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(LNODE)malloc(sizeof(NODE));
if(!p)
return ERROR;
scanf("%d %d",&(p->xishu),&(p->zhishu));
p->next=NULL;
tb->next=p;
tb=p;
}
p=la;
q=lb;
while(q->next!=NULL&&p->next!=NULL)
{
if((p->next->zhishu)>(q->next->zhishu))
{
temp=q->next;
q->next=q->next->next;
temp->next=p->next;
p->next=temp;
p=temp;
}
else
{
if(p->next->zhishu==q->next->zhishu)
{
sum=p->next->xishu+q->next->xishu;
if(!sum)		//如果和为零
{
temp=p->next;
p->next=temp->next;
free(temp);
temp=q->next;
q->next=temp->next;
free(temp);
}
else
{
p->next->xishu=sum;
p=p->next;
q=q->next;
}
}
else
{
p=p->next;
}
}
}
if(NULL==p->next)
{
p->next=q->next;
}
p=la->next;
while(p)
{
printf("(%d %d)/n",p->xishu,p->zhishu);
p=p->next;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: