多项式加减法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一实验目的
设计一个一元稀疏多项式简单计算器。
二、实验要求
能创建和实现多项式的加减等各种功能。
三、实验内容
一元稀疏多项式的基本功能:
1、输入并建立多项式;
2、输出多项式,输出的形式为整数序列:n,c1,e1,c2,e2,……,cn,en,其中n
是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。
3、多项式a和b相加,建立多项式a+b;
4、多项式a和b相加,建立多项式a-b;
四、程序源代码
#include
#include
#define NULL 0
typedef struct LNode{
float coef;
int expn;
struct LNode *next;
}LNode, *Linklist;
/////////////////////////////////////////////////
LNode *creat(int count)///////////////////////////创建链表,存放多项式{
Linklist p1,p2,head;
int n=0;
p1=p2=(Linklist)malloc(sizeof(LNode));
scanf("%f %d",&p1->coef,&p1->expn);
head=NULL;
while(n { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(Linklist)malloc(sizeof(LNode)); if(n!=count) { scanf("%f %d",&p1->coef,&p1->expn); } } p2->next=NULL; return(head); } Linklist sort(Linklist head)////////////////////////对多项式按指数降序排序 { Linklist p0,p1,p2; int i=0; int s; float f; p0=p1=head; while(p0) { i++; p0=p0->next; } for(int j=0;j { p1=head; while(p1->next) { p2=p1; p1=p1->next; if(p1->expn>p2->expn) { f=p1->coef; s=p1->expn; p1->coef=p2->coef; p1->expn=p2->expn; p2->coef=f; p2->expn=s; } } } return head; } /////////////////////////////////////////////////////合并系数相同的项Linklist merge(Linklist head) { Linklist p1,p2; p1=p2=head; while(p1) { p2=p1; p1=p1->next; while(p1&&p1->expn==p2->expn) { p2->coef+=p1->coef; p2->next =p1->next ; free(p1); p1=p2->next ; } } return head; } /////////////////////////////////////////////////////输入多项式各项系 数及指数 void print(Linklist head) { Linklist p,q; int count=0; q=head; while(q) { q=q->next; count++; } printf("多项式中的各项系数指数依次为:\n"); printf("%d",count); p=head; if(head==NULL) printf("所得结果为0!\n"); if(head!=NULL) do {printf("\t%4.2fX%d",p->coef,p->expn); p=p->next; }while(p!=NULL); printf("\n"); } ///////////////////////////////////////////////////////出去系数为零的项 Linklist del_Zero(Linklist head) { Linklist p1,p2; if(head==NULL) { printf("\nlist null! \n");return head; } p1=p2=head;