链表线性结构(多项式的加减乘除).doc

链表线性结构(多项式的加减乘除).doc

ID:57262609

大小:316.00 KB

页数:18页

时间:2020-08-07

链表线性结构(多项式的加减乘除).doc_第1页
链表线性结构(多项式的加减乘除).doc_第2页
链表线性结构(多项式的加减乘除).doc_第3页
链表线性结构(多项式的加减乘除).doc_第4页
链表线性结构(多项式的加减乘除).doc_第5页
资源描述:

《链表线性结构(多项式的加减乘除).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构与算法课程类型:必修实验项目:线性结构及其应用实验题目:多项式的加减乘除和特定值带入实验日期:2017/11/5班级:学号:姓名:安宏宇设计成绩报告成绩指导老师张岩一、实验目的设计线性表的链式存储结构,并实现一元多项式的代数运算。二、实验要求及实验环境(1)实验要求:以链表存储一元多项式,在此基础上完成对多项式的代数操作。1.能够输入多项式(可以按各项的任意输入顺序,建立按指数降幂排列的多项式)和输出多项式(按指数降幂排列),以文件形式输入和输出,并显示。2.能够计算多项式在某一点x=x0的值,其中x0是一个浮点型常量

2、,返回结果为浮点数。3.能够给出计算两个多项式加法、减法、乘法和除法运算的结果多项式,除法运算的结果包括商多项式和余数多项式。4.要求尽量减少乘法和除法运算中间结果的空间占用和结点频繁的分配与回收操作。(提示:利用循环链表结构和可用空间表的思想,把循环链表表示的多项式返还给可用空间表,从而解决上述问题)。(2)实验环境:windows下的CB;三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.逻辑设计:structpolynode{intcoef;intexp;structpolynode*link;};//建立链表typedefs

3、tructpolynodepoly;poly*Attch(intc,inte,poly*d);//多项式插入poly*newPoly();//新链表poly*padd(poly*p1,poly*p2);//多项式加法poly*pmul(poly*p1,poly*p2);//乘法poly*inputPoly();//输入多项式poly*psub(poly*p1,poly*p2);//减poly*pdiv(poly*p1,poly*p2);//除poly*inputPoly1();doublecaculate(doublex,poly*p);//计算多项式voidsortPoly(

4、poly*p);//多项式排序voidoutputPoly(poly*p);//输出多项式voiddelPoly(poly*p);//清空多项式2.物理设计:四、测试结果五、经验体会与不足不能连续输入多个多项式函数设计不够简洁算法过于直接简单加注释后修改代码方便六、附录:源代码(带注释)#include#includestructpolynode{intcoef;intexp;structpolynode*link;};//建立新链表typedefstructpolynodepoly;poly*Attch(intc,inte,poly*d)

5、;//插入链表poly*newPoly();//建立新链表poly*padd(poly*p1,poly*p2);//加法poly*pmul(poly*p1,poly*p2);//乘法poly*inputPoly();//输入多项式poly*psub(poly*p1,poly*p2);//减法poly*pdiv(poly*p1,poly*p2);//除法poly*inputPoly1();//输入doublecaculate(doublex,poly*p);//计算voidsortPoly(poly*p);//排序voidoutputPoly(poly*p);//输出多项式voi

6、ddelPoly(poly*p);//除法voidInsert(poly*p,poly*h){if(p->coef==0)free(p);else{poly*q1,*q2;q1=h;q2=h->link;while(q2&&p->expexp){q1=q2;q2=q2->link;}/*判断两个指数是否相等*/if(q2&&p->exp==q2->exp){q2->coef+=p->coef;free(p);if(!q2->coef){q1->link=q2->link;free(q2);}}/*相等就加系数*/else{p->link=q2;q1->link=p;}

7、}/*不等就插在后面*/}intmain(){poly*p1,*p2,*padd1,*psub1,*pmul1;p1=newPoly();printf("第一个多项式");p1->link=inputPoly();outputPoly(p1);p2=newPoly();printf("第二个多项式");p2->link=inputPoly1();outputPoly(p2);padd1=newPoly();pmul1=newPoly();psub1=newPoly();padd1->

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。