资源描述:
《自主设计实验二多项式求和》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.电子信息学院实验报告书课程名:数据结构题目:多项式求和实验类别自主设计实验班级:BX1206学号:23姓名:张善干评语:实验态度:认真()一般()差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()不懂()操作技能:强()一般()差()实验报告:好()一般()差()成绩:指导教师:批阅时间:年月日..1、实验内容或题目(1)顺序存储结构的实现。例如,已知:f(x)=8x6+5x5-10x4+32x2-x+10,g(x)=7x5+10x4-20x3-10x2+x,求和结果:f(x)+g(x)=8x6+12
2、x5-20x3+22x2+10。顺序表数据类型定义如下:#defineMAXLEN100typedefstruct{intdata[MAXLEN];intlast;}SeqList;(2)链式存储结构的实现。例如,已知:f(x)=100x100+5x50-30x10+10,g(x)=150x90-5x50+40x20+20x10+3x,求和结果:f(x)+g(x)=100x100+150x90+40x20-10x10+3x+10。(3)编程实现多项式求和的运算。2、实验目的与要求(1)利用C(或C++)语言完成算法设计和程序设计
3、。(2)上机调试通过实验程序。(3)输入数据,检验程序运行结果。(4)给出具体的算法分析,包括时间复杂度和空间复杂度等。(5)撰写实验报告。3、实验步骤与源程序(一)顺序存储结构的实现。一、源程序代码:#include#defineMAXLEN100typedefstruct{intdata[MAXLEN];..intlast;}SeqList;//多项式相加voidadd_List(SeqListA,SeqListB,SeqList*C){inti,j,k,l;C->last=-1;if(A.last>B.l
4、ast)k=A.last,l=B.last;elsek=B.last,l=A.last;for(i=0;idata[i]=A.data[i]+B.data[i],C->last++;for(j=i;j<=k;j++)C->data[j]=A.data[j]+B.data[j],C->last++;C->last++;}//显示多项式voidshow_list(SeqListC){inti;for(i=C.last-1;i>0;i--){if(C.data[i]==0)C.last--,i--;if(C.dat
5、a[i]==0)C.last--,i--;printf("(%dX^%d)+",C.data[i],--C.last);}if(i==0)printf("%d",C.data[i]);}//生成一个多项式voidcreate_list(SeqList*D){intn,i;..printf("请给出多项式X的最高次数:");scanf("%d",&n);for(intk=99;k>=0;k--)D->data[k]=0;printf("请按多项式X的次数由大到小输入系数,缺少项用0补齐");for(i=n,D->last=0;
6、i>=0;i--){scanf("%d",&D->data[i]);D->last++;}}voidmain(){SeqListA,B,C;printf("生成多项式A(x):");create_list(&A);printf("A(x)=");show_list(A);printf("生成多项式B(x):");create_list(&B);printf("B(x)=");show_list(B);printf("多项式A(x)和B(x)的和");add_List(A,B,&C);printf("C
7、(x)=");show_list(C);}..二、运行结果。输入A(x)最高次数7,再输入系数-11、23、0、-4、11、28、0、23,再输入B(x)最高次数5,再输入0、-20、14、5、34、19,然后得到两个多项式的和C(x)结果如图1所示。如图1..(二)链式多项式求和一、源程序代码:#include#include#includetypedefstructlinknode{floatcoef;intexpn;structlinknode*next;}Node;/
8、/创建一个链式存储结构的多项式voidcreate_link_list(Node*L){Node*p,*q;intn=1;floatx=1;q=L;printf("请按多项式指数由大到小输入系数和指数:");while(fabs(x)>0.000001){s