数据结构:一元稀疏多项式计算器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:项数,系数,指数,序列按指数降序排列.(3)多项不式a和b相加,建立多项式a+b.(4)多项式a和b相减,建立多项式a-b.(5)计算多项式在x处的值.不要上网复制给我,我已找过不符合.我要的是按要求做的程序,
网友回答
#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中的项//