数据结构:一元稀疏多项式计算器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.(3)多项不式a和b相加,建立多项式a+b.(4)多项式a和b
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 02:16:43
![数据结构:一元稀疏多项式计算器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.(3)多项不式a和b相加,建立多项式a+b.(4)多项式a和b](/uploads/image/z/5235193-1-3.jpg?t=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%9A%E4%B8%80%E5%85%83%E7%A8%80%E7%96%8F%E5%A4%9A%E9%A1%B9%E5%BC%8F%E8%AE%A1%E7%AE%97%E5%99%A8%EF%BC%881%EF%BC%89%E8%BE%93%E5%85%A5%E5%B9%B6%E5%BB%BA%E7%AB%8B%E5%A4%9A%E9%A1%B9%E5%BC%8F%EF%BC%882%EF%BC%89%E8%BE%93%E5%87%BA%E5%A4%9A%E9%A1%B9%E5%BC%8F%2C%E8%BE%93%E5%87%BA%E5%BD%A2%E5%BC%8F%E4%B8%BA%E6%95%B4%E6%95%B0%E5%BA%8F%E5%88%97%EF%BC%9A%E9%A1%B9%E6%95%B0%2C%E7%B3%BB%E6%95%B0%2C%E6%8C%87%E6%95%B0%2C%E5%BA%8F%E5%88%97%E6%8C%89%E6%8C%87%E6%95%B0%E9%99%8D%E5%BA%8F%E6%8E%92%E5%88%97.%EF%BC%883%EF%BC%89%E5%A4%9A%E9%A1%B9%E4%B8%8D%E5%BC%8Fa%E5%92%8Cb%E7%9B%B8%E5%8A%A0%2C%E5%BB%BA%E7%AB%8B%E5%A4%9A%E9%A1%B9%E5%BC%8Fa%2Bb.%EF%BC%884%EF%BC%89%E5%A4%9A%E9%A1%B9%E5%BC%8Fa%E5%92%8Cb)
数据结构:一元稀疏多项式计算器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.(3)多项不式a和b相加,建立多项式a+b.(4)多项式a和b
数据结构:一元稀疏多项式计算器
(1)输入并建立多项式
(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.
(3)多项不式a和b相加,建立多项式a+b.
(4)多项式a和b相减,建立多项式a-b.
(5)计算多项式在x处的值.
不要上网复制给我,我已找过不符合.我要的是按要求做的程序,
数据结构:一元稀疏多项式计算器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.(3)多项不式a和b相加,建立多项式a+b.(4)多项式a和b
#include<stdio.h> 声明部分:源代码含有2个文件
#include<malloc.h>
typedef struct pnode // 定义指针//
{int coef; //定义系数//
int exp; //定义指数//
struct pnode *next;
}pnode;
pnode * creat() //creat函数用来存放多项式//
{int m,n;
pnode *head,*rear,*s;
head=(pnode *)malloc(sizeof(pnode));
rear=head;
printf("\n输入指数(按递增顺序输入):");
scanf("%d",&m);
printf("输入一元式系数(0为退出):");
scanf("%d",&n);
do
{
s=(pnode *)malloc(sizeof(pnode));
s->coef=n; //n为系数//
s->exp=m; //m为指数//
rear->next=s;
s->next=NULL;
rear=s;
printf("\n输入指数(按递增顺序输入):");
scanf("%d",&m);
printf("输入一元式系数(0为退出):");
scanf("%d",&n);
}while(n);
return head;
}
pnode * add(pnode *heada,pnode *headb)
{pnode *headc,*a,*b,*s,*rearc;
int sum;
a=heada->next;b=headb->next;
headc=(pnode *)malloc(sizeof(pnode));
rearc=headc;
//多项式的存放//都放到s中里//
while(a!=NULL&&b!=NULL) //指数相等,则系数相加.//
{
if(a->exp==b->exp)
{ sum=a->coef+b->coef;
if(sum)
{s=(pnode *)malloc(sizeof(pnode));
s->coef=sum;
s->exp=a->exp;
rearc->next=s;
rearc=s;
a=a->next;
b=b->next;}
else
{a=a->next;
b=b->next;
}
}
else if(a->exp<b->exp)
//a指数如果小于b,则a放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s->coef=a->coef;
s->exp=a->exp;
rearc->next=s;
//用下一个结点s取代下一个c//
rearc=s;
a=a->next;
}
else //如果a的指数大,则b放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s->coef=b->coef;
s->exp=b->exp;
rearc->next=s;
rearc=s;
b=b->next;
}
}
if(a)
{while(a!=NULL) //b空了放a中的项//
{s=(pnode *)malloc(sizeof(pnode));
s->coef=a->coef;
s->exp=a->exp;
rearc->next=s;
s->next=NULL;
rearc=s;
a=a->next;
}
}
else if(b)
{while(b!=NULL) //a空了放b中的项//
{s=(pnode *)malloc(sizeof(pnode));
s->coef=b->coef;
s->exp=b->exp;
rearc->next=s;
s->next=NULL;
rearc=s;
b=b->next;
}}
return headc;
}
void main()
{pnode *a,*b,*c;
printf("建立A:");
a=creat();
printf("\n建立B:");
b=creat();
c=add(a,b);
c=c->next;
printf("%dx^%d",c->coef,c->exp);
c=c->next;
while(c!=NULL)
{printf("+%dx^%d",c->coef,c->exp);
c=c->next;
}
}
参考资料: