欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    大数据结构课程设计一元多项式计算器.docx

    • 资源ID:81049       资源大小:173.83KB        全文页数:16页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大数据结构课程设计一元多项式计算器.docx

    1、大数据结构课程设计一元多项式计算器实习1、一元稀疏多项式计算器一、 需求分析1. 问题描述设计一个一元稀疏多项式简单计算器。2. 基本要求 一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式。(2)输出多项式,输出形式为整数序列:n, c1, e1, c2, e2, ,cn, en ,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排列。(3)多项式a和b想加,建立多项式a+b 。(4)多项式a和b想减,建立多项式a-b 。3. 测试数据 (1) (2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (2) (6x-

    2、3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x) (3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5) (4) (x+x3)+(-x-x3)=0 (5) (x+x100)+(x100+x200)=(x+2x100+x200) (6) (x+x2+x3)+0=(x+x2+x3) (7) 互换测试数据的前后两个多项式。4. 实现提示 用带表头结点的单链表存储多项式。二、概要设计为实现上述程序功能,应用带头结点的单链表存储多项式。为此需要一个抽象数据类型:一元多项式。1.抽象数据类型一元多

    3、项式定义为:ATD Ploynomial 数据对象:D=ai|aiTermset, i=1,2,3,m,m0 Termset中的每个元素包含一个表示系数的实数和表示指数的整数数据关系:R1=ai-1,aiD,且ai-1中的指数ai中的指数的值,i=1,2,3n基本操作:Insert(p,h)初始条件:h已存在。操作结果:插入p项。CreateLinklist(head, m)操作结果:建立一个头指针为head、项数为m的一元多项式。DestroyLinklist( p)初始条件:一元多项式p已存在。操作结果:销毁一元多项式p。PrintLinklist( P)初始条件:一元多项式p已存在。操作

    4、结果:输出一元多项式p。Compare(a,b) 初始条件:项a,b已存在。操作结果:比较a,b中x的指数的大小。 AddLinklist(pa,pb)初始条件:一元多项式pa,pb已存在。操作结果:完成一元多项式pa,pb的相加运算。SubtractionLinklist(Sa,Sb) 初始条件:一元多项式Sa,Sb已存在。操作结果:完成一元多项式Sa,Sb的相减运算。 ATD Ploynomial三、详细设计(源代码)(使用C语言)#include#include#define maxlen 10#define large 999typedef struct Linklistomial f

    5、loat coef; int expn; struct Linklistomial *next;Linklistomial,*Linklist;/结点类型,指针类型void Insert(Linklist p,Linklist h)/ h已存在插入p项 if(p-coef=0) free(p);/系数为0的话释放结点 else Linklist q1,q2; q1=h; q2=h-next; while(q2&p-expnexpn) /查找插入位置 q1=q2; q2=q2-next; if(q2&p-expn=q2-expn) /将指数相同相合并 q2-coef+=p-coef; free(

    6、p); if(!q2-coef) /系数为0的话释放结点 q1-next=q2-next; free(q2); else /指数为新时将结点插入 p-next=q2; q1-next=p; Linklist CreateLinklist(Linklist head,int m)/建立一个头指针为head、项数为m的一元多项式 int i; Linklist p; p=head=(Linklist)malloc(sizeof(struct Linklistomial); head-next=NULL; for(i=0;icoef,&p-expn); Insert(p,head); /调用Inse

    7、rt函数插入结点 return head;void DestroyLinklist(Linklist p)/销毁多项式p Linklist D1,D2; D1=p; while(D1) D2=D1-next; free(D1); D1=D2; void PrintLinklist(Linklist P)/输出一元多项式p Linklist q=P-next; int flag=1; /项数计数器 if(!q) /若多项式为空,输出0 putchar(0); printf(n); return; while(q) if(q-coef0&flag!=1) putchar(+); /系数大于0且不是

    8、第一项 if(q-coef!=1&q-coef!=-1) /系数非1或-1的普通情况 printf(%g,q-coef); if(q-expn=1) putchar(X); else if(q-expn) printf(X%d,q-expn); else if(q-coef=1) if(!q-expn) putchar(1); else if(q-expn=1) putchar(X); else printf(X%d,q-expn); if(q-coef=-1) if(!q-expn) printf(-1); else if(q-expn=1) printf(-X); else printf(

    9、-X%d,q-expn); q=q-next; flag+; printf(n);int Compare(Linklist a,Linklist b)/比较a,b中x的指数的大小 if(a&b) if(!b|a-expnb-expn) return 1; else if(!a|a-expnexpn) return -1; else return 0; else if(!a&b)/a多项式已空,但b多项式非空 return -1; else/b多项式已空,但a多项式非空 return 1;Linklist AddLinklist(Linklist pa,Linklist pb)/求解并建立多项式

    10、a+b,返回其头指针 Linklist qa=pa-next; Linklist qb=pb-next; Linklist headc,hc,qc; hc=(Linklist)malloc(sizeof(struct Linklistomial);/建立头结点 hc-next=NULL; headc=hc; while(qa|qb) qc=(Linklist)malloc(sizeof(struct Linklistomial); switch(Compare(qa,qb) case 1: qc-coef=qa-coef; qc-expn=qa-expn; qa=qa-next; break;

    11、 case 0: qc-coef=qa-coef+qb-coef; qc-expn=qa-expn; qa=qa-next; qb=qb-next; break; case -1: qc-coef=qb-coef; qc-expn=qb-expn; qb=qb-next; break; if(qc-coef!=0) qc-next=hc-next; hc-next=qc; hc=qc; else free(qc);/当相加系数为0时,释放该结点 return headc;Linklist SubtractionLinklist(Linklist Sa,Linklist Sb)/求解并建立多项式

    12、a-b,返回其头指针 Linklist Cb=Sb-next; while(Cb) Cb-coef=(-1)*Cb-coef; Cb=Cb-next; return AddLinklist(Sa,Sb);int main() int m,n,a=1; char flag; Linklist pa=0,pb=0,pc; printf( 欢迎使用一元多项式加法器nn);/输出菜单 printf( *n); printf( * 一元多项式简单运算器 *n); printf( * *n); printf( * A: 输入多项式a B: 输入多项式b *n); printf( * *n); printf

    13、( * C: 输出多项式a D: 输出多项式b *n); printf( * *n); printf( * E: 输出a+b F: 输出a-b *n); printf( * *n); printf( * G: 使用完毕! *n); printf( *n); while(a) printf(n 请选择操作:); scanf( %c,&flag);/空格符号一定要注意 switch(flag) caseA: casea: printf(下面进行多项式a的输入:n); printf(请输入a的项数:); scanf(%d,&m); pa=CreateLinklist(pa,m);/建立多项式a br

    14、eak; caseB: caseb: printf(下面进行多项式b的输入:n); printf(请输入b的项数:); scanf(%d,&n); pb=CreateLinklist(pb,n);/建立多项式b break; caseC: casec: printf(n 多项式a=); PrintLinklist(pa); break; caseD: cased: printf(n 多项式b=); PrintLinklist(pb); break; caseE: casee: pc=AddLinklist(pa,pb); printf(n a+b=); PrintLinklist(pc); break; caseF: casef: pc=SubtractionLinklist(pa,pb); printf(n a-b=); PrintLinklist(pc); break; caseG: caseg: DestroyLinklist(pa); DestroyLinklist(pb); a=0; printf(n 欢迎下次使用!n); break; default: printf(n 您的选择错误,请重新选择!n); return 0;四、调试分析编译环境为CodeBlocks。


    注意事项

    本文(大数据结构课程设计一元多项式计算器.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开