但在这种情况下是不对的:
La:1x^1+2x^3+3x^4+4x^5+5x^6
Lb:(3,2)+(4,3)+(5,5)+(6,7)
解决办法还未想出
#include<stdio.h>
#include<stdlib.h>
typedef int datatype
typedef struct node
{
datatype xishu,zhishu,xiangshu//
struct node*next
}node,*first
//*******************//
node* jianli(node*first)
{
node *p,*q
int x=1,t=1,y
first=(node*)malloc(sizeof(node))
p=first
p->next =NULL///////////
while(x)
{
printf("请输入第%d项,例如+2 3即表示2x^3(输入0 0结束):\n",t)
scanf("%d %d",&x,&y)
if(x==0)
{
p->next=NULL
return first
}
else
{
q=(node*)malloc(sizeof(node))
q->xishu=x
q->zhishu=y
q->next =p->next
p->next=q
p=q
t++//统计有多少项
}
}
return first
}
//排序
void paixu(node*first)
{
int i,j
node *p,*max
//排序
for(max=first->nextmax->next!=NULLmax=max->next)
{
for(p=max->nextp!=NULLp=p->next)
{
if(max->zhishu<p->zhishu)//排序
{
i=max->xishu
j=max->zhishu
max->xishu=p->xishu
max->zhishu=p->zhishu
p->xishu=i
p->zhishu=j
}
}
}
}
//计算
node*jia(node*first1,node*first2,node*first3)
{
node *f1,*f2,*p,*q
int i,j
first3=(node*)malloc(sizeof(node))
p=first3
first3->next =NULL
for(f1=first1->nextf1!=NULLf1=f1->next)
{///////////////////////////////////////////
for(f2=first2->nextf2!=NULLf2=f2->next)
if(f1->zhishu==f2->zhishu)
{
i=f1->xishu+f2->xishu
j=f1->zhishu
if(i!=0)
{
q=(node*)malloc(sizeof(node))
q->xishu=i
q->zhishu=j
q->next =p->next
p->next=q//p 指向 q
p=q//p到末尾
}
}
}//////////////////////////////////////////
//f1.length<=f2.length
if(f2!=NULL)//////
{
for(f2!=NULLf2=f2->next)
{
q=(node*)malloc(sizeof(node))
q->xishu=f2->xishu
q->zhishu=f2->zhishu
p->next=q
p=q
}
p->next=NULL
return
first3
}
else////////////////////////////
return first3//////////////
}
//计算长度
int changdu(node*first)
{
node *p
int i=0
p=first->next
while(p!=NULL)
{
p=p->next
i++
}
return i
}
//输出
void shuchu(node*first)
{
node *q
q=first->next
while(q!=NULL)
{
if(q->xishu>0)
{
printf("+%dx^%d",q->xishu,q->zhishu)
q=q->next
}
else
{
printf("%dx^%d",q->xishu,q->zhishu)
q=q->next
}
}
printf("\n")
}
void main()
{
node *La,*Lb,*Lc
int i,j
abc: La=jianli(La)//多项式La Lb
Lb=jianli(Lb)
i=changdu(La)//计算La Lb的长度
j=changdu(Lb)
printf("La.length=%d,Lb,length=%d\n",i,j)
if(i<j)
Lc=jia(La,Lb,Lc)
else
Lc=jia(Lb,La,Lc)
printf("La+Lb=:")
shuchu(Lc)
paixu(Lc)
printf("排序后 La+Lb=:")
shuchu(Lc)
goto abc
}
以下以一元n次多项式X的值均为整数为例:
#include<stdio.h>
int main()
{ int i,n,x,y=0,a
printf("输入多项式有次数和X的值:\nn x=")
scanf("%d%d",&n,&x)
printf("依次输入每一项的系数:\n")
for(i=0i<=ni++)
{scanf("%d",&a)
y=y*x+a
}
printf("%d\n",y)
return 0
}