欢迎来到天天文库
浏览记录
ID:56779483
大小:162.50 KB
页数:25页
时间:2020-07-09
《数据结构线性表的应用实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.实验报告课程名称____数据结构上机实验__________实验项目______线性表的应用____________实验仪器________PC机___________________系别_____电子信息与通信学院___专业___________班级/学号________学生姓名_________________实验日期_______________________成绩_______________________指导教师_______________________教育资料.实验一.线性表的应用1.实验目的:掌握线性链表的存储、运算及应用。利用链表实现一元多项
2、式计算。2.实验内容:1)编写函数,实现用链表结构建立多项式;2)编写函数,实现多项式的加法运算;3)编写函数,实现多项式的显示;4)测试:编写主函数,它定义并建立两个多项式,显示两个多项式,然后将它们相加并显示结果。变换测试用的多项式,检查程序的执行结果。选做内容:修改程序,选择实现以下功能:5)多项式求值:编写一个函数,根据给定的x值计算并返回多项式f(x)的值。测试该函数(从终端输入一个x的值,调用该函数并显示返回结果)。6)多项式相减:编写一个函数,求两个多项式相减的多项式。7)多项式相乘:编写一个函数,求两个多项式的乘积多项式。3.算法说明:1)多项式的建
3、立、显示和相加算法见讲义。可修改显示函数,使输出的多项式更符合表达规范。教育资料.1)多项式减法:同次项的系数相减(缺项的系数是0)。例如a(x)=-5x2+2x+3,b(x)=-4x3+3x,则a(x)-b(x)=4x3-5x2-x+3。提示:a(x)-b(x)=a(x)+(-b(x))。2)多项式乘法:两个多项式的相乘是“系数相乘,指数相加”。算法思想是用一个多项式中的各项分别与另一个多项式相乘,形成多个多项式,再将它们累加在一起。例如,a(x)=-5x2+2x+3,b(x)=-4x3+3x,则a(x)*b(x)=(-4x3)*(-5x2+2x+3)+(3x)*
4、(-5x2+2x+3)=(20x5-8x4-12x3)+(-15x3+6x2+9x)=20x5-8x4-27x3+6x2+9x。2.实验步骤:根据实验报告的要求,我对文件夹里的C文件进行了丰富和修改,步骤如下:链表结构建立多项式:typedefstructpolynode{floatcoef;//系数intexp;//指数structpolynode*next;//下一结点指针}PNode;编写函数,实现多项式的加法运算;PNode*PolyAdd(PNode*f1,PNode*f2)//实现加法功能。教育资料.{//实现两多项式(头指针分别为f1和f2)相加,返回
5、和多项式f3=f1+f2。PNode*pa=f1->next,*pb=f2->next,*pc,*f3,*q;intexp;floatcoef;f3=(PNode*)malloc(sizeof(PNode));//建立头指针f3->exp=-1;//对头指针初始化f3->next=f3;pc=f3;//将pc指向头指针while(pa->exp!=-1
6、
7、pb->exp!=-1)//返回头指针时,跳出循环{if(pa->exp>pb->exp){exp=pa->exp;coef=pa->coef;pa=pa->next;}elseif(pa->expexp
8、){exp=pb->exp;coef=pb->coef;教育资料.pb=pb->next;}else{exp=pa->exp;coef=pa->coef+pb->coef;pa=pa->next;pb=pb->next;}if(coef!=0){q=(PNode*)malloc(sizeof(PNode));//建立新的q指针存放负指数的指针q->exp=exp;q->coef=coef;//将q插入链表中q->next=pc->next;pc->next=q;pc=q;}}returnf3;//返回教育资料.}实现多项式的显示;voidShowPloy(PNode
9、*h)//用if语句判断,当指数为0是,只输出系数;当指数为1时,输出系数和X;当系数为1时,输出X和指数。{h=paixu(h);//整理函数,使之降幂排列PNode*p=h->next;if(p==h){printf("表达式为空");return;}if(p->coef==1)printf("x^%d",p->exp);//用if语句判断,若输出x^o和x^1值为0和1直接输出数据。elseif(p->exp==1)printf("%gx",p->coef);elseif(p->exp==0)printf("%g",p->coef);else教育资料.
此文档下载收益归作者所有