一元稀疏多项式计算器(数据结构).doc_第1页
一元稀疏多项式计算器(数据结构).doc_第2页
一元稀疏多项式计算器(数据结构).doc_第3页
一元稀疏多项式计算器(数据结构).doc_第4页
一元稀疏多项式计算器(数据结构).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【问题描述】设计一个一元稀疏多项式简单计算器【基本要求】一元多项式简单计算器的基本功能是: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+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)【实现提示】用带表头结点的单链表存储多项式。#include #include typedef struct 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相加void 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)/显示,输出多项式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);else printf(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(polynmial &L)/逆置polynmial H;static struct node *p, *q, *s;H = (struct 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 = H-next;q = L-next;while(p) q-coef = p-coef; q-expn = p-expn; q = q-next; p = p-next;void select() /用户选择加减操作printf(请选择加减操作n);printf(1.两个一元多项式相加n);printf(2.两个一元多项式相减n);void add(polynmial La, polynmial Lb, polynmial &Lc)/多项式La,Lb相加struct node *pa, *pb;static struct node *pc;Lc = (struct node*)malloc(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; else if(pa-expn = pb-expn) pc-next = Lc-next; Lc-next = pc; pc-expn = pa-expn; pc-coef = pa-coef + pb-coef; pa = pa-next; pb = pb-next; else pc-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*)malloc(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-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; else if(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; else pd-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 = 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, &s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论