资源描述:
《链表线性结构多项式的加减乘除》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构与算法课程类型:必修实验项目:线性结构及其应用实验题目:多项式的加减乘除和特定值带入实验日期:2017/11/5班级:1603001学号:1160300121姓名:安宏宇设计成绩报告成绩指导老师张岩一、实验目的设计线性表的链式存储结构,并实现一元多项式的代数运算。二、实验要求及实验环境(1)实验要求:以链表存储一元多项式,在此基础上完成对多项式的代数操作。1.能够输入多项式(可以按各项的任意输入顺序,建立按指数降幂排列的多项式)和输出多项式(按指数降幂排列),以文件形式输入和输出,并
2、显示。2.能够计算多项式在某一点x=x0的值,其中x0是一个浮点型常量,返回结果为浮点数。3.能够给出计算两个多项式加法、减法、乘法和除法运算的结果多项式,除法运算的结果包括商多项式和余数多项式。4.要求尽量减少乘法和除法运算中间结果的空间占用和结点频繁的分配与回收操作。(提示:利用循环链表结构和可用空间表的思想,把循环链表表示的多项式返还给可用空间表,从而解决上述问题)。(2)实验环境:windows下的CB;三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.逻辑设计:structpolynod
3、e{intcoef;intexp;structpolynode*link;};//建立链表typedefstructpolynodepoly;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);/
4、/除poly*inputPoly1();doublecaculate(doublex,poly*p);//计算多项式voidsortPoly(poly*p);//多项式排序voidoutputPoly(poly*p);//输出多项式voiddelPoly(poly*p);//清空多项式2.物理设计:四、测试结果五、经验体会与不足不能连续输入多个多项式函数设计不够简洁算法过于直接简单加注释后修改代码方便六、附录:源代码(带注释)#include#includestructpolynode{intcoef;i
5、ntexp;structpolynode*link;};//建立新链表typedefstructpolynodepoly;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*inp
6、utPoly1();//输入doublecaculate(doublex,poly*p);//计算voidsortPoly(poly*p);//排序voidoutputPoly(poly*p);//输出多项式voiddelPoly(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&
7、&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;}}/*不等就插在后面*/}intmain(){poly*p1,*p2,*padd1,*psub1,*pmul1;p1=newPoly();printf("第一个多项式");p1->link=inputPoly();outputPoly(p1);p2=newPoly();printf("第二个多
8、项式");p2->link=inputPoly1();outputPoly(p2);padd1=newPoly();pmul1=newPoly();psub1=