数据结构实验多项式加法.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告 实验名称:多项式加减法 学号:19 姓名:林强 实验日期:一、实验目的 通过实现多项式的加减法,对链表有更深入的了解 二、实验具体内容 1、实验题目1 : 题目设计一个一元稀疏多项式简单的加减法计算器 实现要求: 一元稀疏多项式简单计算器的基本功能是: 输入并建立多项式: A(x) 7 3x 9x8 5x17 ; B(x) 8x 22x7 9x8 输出多项式 多项式A和B相加,建立多项式 C= A+ B,并输出相加的结果多项式 C 选作:多项式 A和B相减,建立多项式 C= A- B,并输出相加的结果多项式 D 分析 1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型, 指数为整数,输出的结果也为系数和指数。 (1 )输入的形式和输入值的范围: 输入多项式的系数 a和未知数X的指数b,当a和b都为零时,输入结束。输入值的范围: a为实数,b为整数。 输出形式:输出多项式的系数和多项式未知数 X的指数即(a,b)形式。 程序所能达到的功能,实现两个多项式的加法,并输出最后的结果 2: 整个程序运行期间实行动态创建节点,一边输入数据, 一边创建节点当将全部数据输入到单链表中后再调用多项式加法这 个函数,并一边实现多项式的相加,一边释放节点,有效防止了 在程序反复运行过程中可能出现系统空间不够分配的现象 (3 )实验代码 typedef int Status; #define OVERFLOW -1 #define null 0 typedef struct Lnode{ float coef; // 存储项系数 int expn;// 存储项指数 struct Lnode *next; }Lnode,*LinkList; typedef LinkList polynomial; Status InitList_L(LinkList L) {// 初始化头节点 L=(LinkList)malloc(sizeof(Lnode)); if(!L) return(-1); L-next=null; return 1; } void AddPolyn(polynomial pa, polynomial pb){ //实现两个多项式相加的算法 float x; polynomial qa; polynomial qb; polynomial s; polynomial u; qa=pa-next; qb=pb-next; s=pa; while(qaqb){ if(qa_expnqb_expn){ s=qa; qa=qa-next; } else if(qa-expn==qb-expn){ x=qa-coef+qb-coef; if(x!=0){ qa-coef=x; s=qa; qa=qa_next; u=qb; qb=qb-next; free(u); } else{ s-next=qa-next; free(qa); qa=s-next; u=qb; qb=qb-next; free(u); } } else if(qa-expnqb-expn){ u=qb-next; s-next=qb; s=qb; qb-next=qa; qb=u; } } if(qb) qa-next=qb; free(pb); } void main(){ float a; int b; polynomial L1; polynomial L2; LinkList q; LinkList p; LinkList m; LinkList n; lnitList_L(L1); q=L1; InitList_L(L2); p=L2; coutvv 请输入数据: vvendl; for(;;){ cin?a; cin?b; if(a==Ob==0) break; m=new Lnode; m_coef=a; m_expn=b; q_next=m; q=m; q-next=null; }〃 循环输入第一个多项式的系数与指数 for(;;){ cina; cinb; if(a==0b==0) break; n=new Lnode; n-coef=a; n-expn=b; p-next=n; p=n; p-next=null; }// 循环输入第二个多项式的系数与指数 AddPolyn(L1, L2);// 调用多项式相加的算法 while((L1-next)!=null){ coutvv(vvL1-next-coefvv,vvL1-next-expnvv)vv; L1=L1-next; }// 输岀计算结果 } 三、实验小结 通过编写多项加法这个程序,我将自己所学到的创建链表, 初始化链表和多项式加法算法都应用了一次,这使我们不仅仅只

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档