欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    一元稀疏多项式计算器(数据结构)(共7页).doc

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

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

    一元稀疏多项式计算器(数据结构)(共7页).doc

    精选优质文档-倾情为你奉上【问题描述】 设计一个一元稀疏多项式简单计算器 【基本要求】 一元多项式简单计算器的基本功能是: 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 <stdio.h>#include <malloc.h>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 < n; i+)   p = (struct node *)malloc(sizeof(struct node);   scanf("%f %d", &p->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 <= p->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 < pb->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 < pb->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", &sign);switch(sign)case 1:   printf("多项式之和为:n");   add(La, Lb, Lc);   sort(Lc);   reverse(Lc);   display(Lc);   break;default:   printf("多项式之差为:n");   subtract(La, Lb, Ld);   sort(Ld);   reverse(Ld);   display(Ld);   break;return 0;专心-专注-专业

    注意事项

    本文(一元稀疏多项式计算器(数据结构)(共7页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开