一元稀疏多项式计算器

上传人:博****1 文档编号:493479830 上传时间:2022-07-13 格式:DOCX 页数:7 大小:36.27KB
返回 下载 相关 举报
一元稀疏多项式计算器_第1页
第1页 / 共7页
一元稀疏多项式计算器_第2页
第2页 / 共7页
一元稀疏多项式计算器_第3页
第3页 / 共7页
一元稀疏多项式计算器_第4页
第4页 / 共7页
一元稀疏多项式计算器_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《一元稀疏多项式计算器》由会员分享,可在线阅读,更多相关《一元稀疏多项式计算器(7页珍藏版)》请在金锄头文库上搜索。

1、【问题描述】 设计一个一元稀疏多项式简单计算器【基本要求】 一元多项式简单计算器的基本功能是: 1,输入并建立多项式;2, 输出多项式,输出形式为整数序列:n,c1,e1,c2,c2,.,cn,en,其中n是多项式的 项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;3, 多项式a和b相加,建立多项式a+b;4, 多项式 a 和 b 相减,建立多项式 a-b.【测试数据】1,(2x+5xA8-3.1xA11)+(7-5xA8+11xA9)=(-3.1xA11+11xA9+2x+7)【实现提示】 用带表头结点的单链表存储多项式。#include #include typedef st

2、ruct nodefloat coef;int expn;struct node *next;Lnode, *polynmial;void create(polynmial &L); /输入并建立多项式 Lvoid display(polynmial L); 显示,输出多项式 Lvoid sort(polynmial &L); /多项式 L 按指数排序void reverse(polynmial &L); /逆置void select();/用户选择加减操作void add(polynmial La, polynmial Lb, polynmial &Lc); /多项式 La,Lb 相加 vo

3、id subtract(polynmial La, polynmial Lb, polynmial &Ld); 多项式 La 减去 Lb, 结果给Ldvoid create(polynmial &L) /输入并建立多项式 Lint i, n;static struct node *p;scanf(%d, &n);L = (struct node *)malloc (sizeof(struct node);L-next = NULL;for(i = 0; i coef, &p-expn);p-next = L-next;L-next = p;void display(polynmial L)显示

4、,输出多项式 Lstruct node *p, *q;int flag = 0;int k = 0; q = L-next;while(q) if(q-coef != 0) k+;q = q-next; printf(%d, , k);p = L-next; if(p-coef != 0)printf(%.1f,%d, , p-coef, p-expn); flag+;for(p = p-next; p; p = p-next)if(p-coef != 0)printf(%.1f,%d, , p-coef, p-expn); flag+;if(flag = 0)printf(%dn, flag

5、);elseprintf(n);void sort(polynmial &L)多项式L按指数排序polynmial p, q, r, u;p = L-next; L-next = NULL;while(p != NULL)r = L;q = L-next;while(q != NULL) & (q-expn expn) r = q;q = q-next;u = p-next;r-next = p;p-next = q;p = u;void reverse(po lynm ial &L) 逆置polynmial H;static struct node *p, *q, *s;H = (struc

6、t node*)malloc(sizeof(struct node);H-next = NULL;p = (struct node*)malloc(sizeof(struct node);s = L-next;p-coef = s-coef;p-expn = s-expn;p-next = s-next;while(s)p-coef = s-coef;p-expn = s-expn;p-next = s-next;q = H-next;H-next = p;p-next = q;p = (struct node*)malloc(sizeof(struct node);s = s-next;p

7、= H-next;q = L-next;while(p)q-coef = p-coef;q-expn = p-expn;q = q-next;p = p-next;void select() /用户选择加减操作pri ntf(”请选择加减操作n); prin tf(1 两个一元多项式相加n);prin tf(2 两个一元多项式相减n);void add(polynmial La, polynmial Lb, polynmial &Lc)多项式 La,Lb 相力口 struct node *pa, *pb;static struct node *pc;Lc = (struct node*)mal

8、loc(sizeof(struct node);pa = La-next;pb = Lb-next;Lc-next = NULL;while(pa & pb)pc = (struct node*)malloc(sizeof(struct node); if(pa-expn expn)pc-next = Lc-next;Lc-next = pc;pc-coef = pa-coef;pc-expn = pa-expn;pa = pa-next;elseif(pa-expn = pb-expn)pc-next = Lc-next;Lc-next = pc; pc-expn = pa-expn;pc-

9、coef = pa-coef + pb-coef;pa = pa-next;pb = pb-next;elsepc-next = Lc-next;Lc-next = pc;pc-coef = pb-coef;pc-expn = pb-expn;pb = pb-next;while(pa)pc = (struct node*)malloc(sizeof(struct node); pc-next = Lc-next;Lc-next = pc;pc-coef = pa-coef;pc-expn = pa-expn;pa = pa-next;while(pb)pc = (struct node*)m

10、alloc(sizeof(struct node);pc-next = Lc-next;Lc-next = pc;pc-coef = pb-coef;pc-expn = pb-expn;pb = pb-next;void subtract(polynmial La, polynmial Lb, polynmial &Ld)多项式 La 减去 Lb, 结果给Ldstruct node *pa, *pb;static struct node *pd;Ld = (struct node*)malloc(sizeof(struct node);pa = La-next;pb = Lb-next;Ld-

11、next = NULL;while(pa & pb)pd = (struct node*)malloc(sizeof(struct node); if(pa-expn expn)pd-next = Ld-next;Ld-next = pd;pd-coef = pa-coef;pd-expn = pa-expn;pa = pa-next;elseif(pa-expn = pb-expn)pd-next = Ld-next;Ld-next = pd;pd-expn = pa-expn; pd-coef = pa-coef - pb-coef;pa = pa-next;pb = pb-next;el

12、sepd-next = Ld-next;Ld-next = pd;pd-coef = pb-coef;pd-expn = pb-expn;pb = pb-next;while(pa)pd = (struct node*)malloc(sizeof(struct node); pd-next = Ld-next;Ld-next = pd;pd-coef = pa-coef;pd-expn = pa-expn;pa = pa-next;while(pb)pd = (struct node*)malloc(sizeof(struct node); pd-next = Ld-next;Ld-next

13、= pd;pd-coef = -pb-coef;pd-expn = pb-expn;pb = pb-next;int main()int sign;polynmial La, Lb, Lc, Ld;printf(”请输入第一个多项式:n);create(La);sort(La);printf(请输入第二个多项式:n);create(Lb);sort(Lb);select();scanf(%d, &sign);switch(sign)case 1:prin tf(”多项式之和为:n ”); add(La, Lb, Lc); sort(Lc);reverse(Lc); display(Lc); break;default:prin tf(多项式之差为:n); subtract(La, Lb, Ld); sort(Ld);reverse(Ld); display(Ld); break;return 0;2 1三8-3.1 11R青输卞第二个多项式:P7 dki 9情选择加遽操佇1两个一元多项式用剂 芬两个一元多项式柏减0.樓项式之和为=4, -3,1,11, 11.0,9, 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号