分享
分销 收藏 举报 申诉 / 12
播放页_导航下方通栏广告

类型一元多项式相加实验报告.docx

  • 上传人:天****
  • 文档编号:2652509
  • 上传时间:2024-06-03
  • 格式:DOCX
  • 页数:12
  • 大小:88.61KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    一元 多项式 相加 实验 报告
    资源描述:
    一元多项式相加完整实验报告 一元多项式相加完整实验报告 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(一元多项式相加完整实验报告)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为一元多项式相加完整实验报告的全部内容。 一元多项式相加 实验报告 一元多项式的相加 一 实验内容 根据所学的数据结构中线性结构(线性表)的逻辑特性和物理特性及相关算法,应用于求解一个具体的实际问题--—---——-—两个多项式相加 二 需求分析 1掌握线性结构的逻辑特性和物理特性. 2建立一元多项式. 3将一元多项式输入,并存储在内存中,并按照指数降序排列输出多项式。 4能够完成两个多项式的加减运算,并输出结果。 三 概要设计 1 本程序所用到的抽象数据类型: typedef OrderedLinkList polynomial; // 用带表头结点的有序链表表示多项式 结点的数据元素类型定义为: typedef struct { // 项的表示 float coef; // 系数 int expn; // 指数 term, ElemType; Void AddPolyn(polynomail&Pa,polynomail&Pb) Position GetHead() Position NextPos(LinkList L,Link p) Elem GetCurElem(Link p) int cmp(term a term b) Status SetCurElem(Link&p, ElemType e) Status DelFirst(Link h, Link &q) Status ListEmpty(LinkList L) Status Append(LinkList&L, Link S) FreeNode() 2 存储结构 一元多项式的表示在计算机内用链表来实现,同时为了节省存储空间,只存储其中非零的项,链表中的每个节点存放多项式的系数非零项.它包含三个域,分别存放多项式的系数,指数,以及指向下一个项的指针。 序数coef 指数exp 指针域next 创建一元多项式链表,对运算中可能出现的各种情况进行分析,实现一元多项式的相加相减操作。 3 模块划分 a) 主程序;2)初始化单链表;3)建立单链表; 4)相加多项式 4 主程序流程图 四 详细设计 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项,对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。 核心算法PolyAdd是把分别由pa和pb所指的两个多项式相加,结果为pa所指的多项式.运算规则如下:相加时,首先设两个指针变量qa和qb分别从多项式的首项开始扫描(见图2-5—1),比较qa和qb所指结点指数域的值,可能出现下列三种情况之一: (1)qa—>exp大于qb-〉exp,则qa继续向后扫描。 (2)qa->exp等于qb-〉exp,则将其系数相加。若相加结果不为零,将结果放入qa-〉coef中,并删除qb所指结点,否则同时删除qa和qb所指结点。然后qa、qb继续向后扫描。 (3)qa->exp小于qb—>exp,则将qb所指结点插入qa所指结点之前,然后qa、qb继续向后扫描。 扫描过程一直进行到qa或qb有一个为空为止,然后将有剩余结点的链表接在结果表上。所得pa指向的链表即为两个多项式之和。 五 源程序代码 #include <stdio。h> #include 〈malloc。h〉 #include <stdlib.h〉 #define NULL 0 typedef struct NODE { float coef; //系数 int expn; //指数 struct NODE *next; }NODE; NODE *Creat(int n); void print(NODE *head); NODE *AddPolyn(NODE *head1, NODE *head2); NODE *Delfirst(NODE *head, NODE *q); void InsertBefore(NODE *p1, NODE *p2); int compare(int a, int b); main() { NODE *head1, *head2, *head3; int n1, n2; printf("请输入你需要的多项数的数目 n1 : "); scanf(”%d", &n1); head1 = Creat(n1); printf(”第一个多项式的显示 : \n”); print(head1); printf(”\n请输入你需要的多项数的数目 n2 : ”); scanf(”%d”, &n2); head2 = Creat(n2); printf("\n第二个多项式的显示 : \n"); print(head2); head3 = AddPolyn(head1, head2); printf(”\n合并后的多项式的显示 : \n”); print(head3); printf("\n"); } /*创建链表*/ NODE *Creat(int n) { NODE *current, *previous, *head; int i; head = (NODE *)malloc(sizeof(NODE)); /*创建头结点*/ previous = head; for(i = 0; i < n; i++) { current = (NODE *)malloc(sizeof(NODE)); printf("请输入系数和指数 : "); scanf(”%f%d", &current—〉coef, &current—>expn); previous—>next = current; previous = current; } previous->next = NULL; return head; } /*一元多项式的想加,总体考虑,可分qa的指数比qb小,或等于pb(如果系数相加等于0和不等于0),或大于pb 里面由InsertBefore和Delfirst两个小模块组成一部分*/ NODE *AddPolyn(NODE *head1, NODE *head2) { NODE *ha, *hb, *qa, *qb; int a, b; float sum; ha = head1; /*ha和hb指向头结点*/ hb = head2; qa = ha-〉next; /*qa和qb指向头结点的下一个结点*/ qb = hb—>next; while(qa && qb) /*qa和qb均非空*/ { a = qa—〉expn; b = qb->expn; switch(compare(a, b)) { case -1 : /*qa—〉expn < qb—〉expn*/ ha = qa; qa = qa—>next; break; case 0 : sum = qa-〉coef + qb—>coef; /*系数的和*/ if(sum != 0.0) { /*如果不是0。0*/ qa->coef = sum; /*改变系数*/ ha = qa; }else { free(Delfirst(ha, qa)); } free(Delfirst(hb, qb)); qa = ha—〉next; qb = hb->next; /*qb释放后要重新赋值*/ break; case 1 : /*如果qa—〉 expn 〉 qb -> expn*/ Delfirst(hb, qb); InsertBefore(ha, qb); /*把qb插入到ha下一个结点之前*/ qb = hb—>next; ha = ha—>next; break; } } if(qb) ha->next = qb; /*插入剩余的pb*/ free(head2); return head1; } /*比较*/ int compare(int a, int b) { if(a < b) return —1; else if(a > b) return 1; else return 0; } /*删除结点q*/ NODE *Delfirst(NODE *p1, NODE *q) { p1 —> next = q -> next; return (q); } /*插入结点,引入结点p,可以让p插入到p2和p1之间*/ void InsertBefore(NODE *p1, NODE *p2) { NODE *p; p = p1—>next; p1-〉next = p2; p2—〉next = p; } /*打印,为了美观程序分开打印*/ void print(NODE *head) { NODE *current; current = head-〉next; while(current—〉next != NULL) { printf("%0。f * x^%d + ", current-〉coef, current->expn); current = current -> next; } printf("%0.f * x^%d", current-〉coef, current—〉expn); } 六 调试分析 如图第八行,如果直接一次性输完两项的次数和项数,还是会显示“请输入系数和指数” 纠正办法:输入时输完一项的系数和指数,按回车后继续输入. 七 测试结果 输入一个二次三项式X^2+3X^+1,一个三次四项式2X^3+4X^2+X+1 输出如图: 八 心得体会 首先,我的C++学的不是很好,因此做这样一个课程设计感觉有点吃力,还好我不断的看书,翻阅资料,询问同学,上网搜索,总算像模像样地把这个程序编的能运行了。功夫不负有心人。 其次,这次编程是我更多地理解掌握了线性链表的逻辑机构和物理特性。对大一时学过的知识有了很好的巩固.困难还是很多的,比如初次运行的时候,好几十个错误,当时真的感到非常崩溃。幸亏我没有放弃,才最终完成.长舒一口气. 最后,通过这次编程,不仅仅考察了我对知识的掌握,更重要的是锻炼了我的思维能力和耐心,在最困难的时候没有放弃,今天才能如此舒心.
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:一元多项式相加实验报告.docx
    链接地址:https://www.zixin.com.cn/doc/2652509.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork