资源描述:
《数据结构 实验2 多项式求和》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《算法设计与分析》实验报告-7-1、实验目的(1)掌握线性表的顺序存储结构和链式存储结构;(2)掌握线性表插入、删除等基本运算;(3)掌握线性表的典型运用——多项式求和。2、实验内容编程实现多项式的求和运算:(1)顺序存储结构的实现例如,已知:f(x)=8x^6+5x^5-10x^4+32x^2-x+10,g(x)=7x^5+10x^4-20x^3-10x^2+x,求和结果:f(x)+g(x)=8x^6+12x^5-20x^3+22x^2+10。顺序表的定义类型如下:#defineMAXLEN100typedef
2、struct{intdata[MAXLEN];Intlast;}SeqList;(2)链式存储结构的实现例如,已知:f(x)=100x^100+5x^50-30x^10+10,g(x)=150x^90-5x^50+40x^20-20x^10+3x,求和结果:f(x)+g(x)=100x^100+150x^90+40x^20-10x^10+3x+10。3、实验要求(1)利用C(C++)语言完成程序设计。(2)上机调试通过实验程序。(3)输入数据,检验程序运行结果。(4)给出具体的算法分析,包括时间复杂度和空间复杂度
3、等。(5)撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。4、实验步骤与源程序⑴实验步骤我先从具体的问题中抽象出适当的数学模型,然后设计出相应的算法,对于用顺序存储结构实现多项式求和而言,需要设计3个main函数调用的子函数,分别实现创建多项式,多项式相加和显示多项式;对于用链式存储结构实现多项式求和,也同样需要3个这样的子函数,最后,编写程序,并调试程序,得出实验结果。⑵源代码顺序存储结构:#include#defineMAXLEN100typedefstruct{int
4、data[MAXLEN];intlast;}SeqList;《算法设计与分析》实验报告-7-voidadd_List(SeqListA,SeqListB,SeqList*C){inti;C->last=A.last>B.last?A.last:B.last;for(i=0;i<=C->last;i++)C->data[i]=A.data[i]+B.data[i];}voidshow_list(SeqListC){inti;for(i=C.last;i>=1;i--)if(C.data[i])printf("(%
5、dx^%d)+",C.data[i],i);printf("(%dx^%d)",C.data[0],0);}voidcreate_list(SeqList*D){intn,i;printf("tt请输入多项式X的最高次数:");scanf("%d",&n);for(intk=99;k>=0;k--)D->data[k]=0;printf("tt请输入多项式X的次数由大到小输入系数,缺少项用0补齐");for(i=n;i>=0;i--){printf("tt输入X^%d项的系数:",i);
6、scanf("%d",&D->data[i]);}D->last=n;}voidmain()《算法设计与分析》实验报告-7-{SeqListA,B,C;printf("tt创建多项式f(x):");create_list(&A);printf("ttf(x)=");show_list(A);printf("tt创建多项式g(x):");create_list(&B);printf("ttg(x)=");show_list(B);printf("tt多项式f(x)和g(x)的和:");a
7、dd_List(A,B,&C);printf("ttf(x)+g(x)=");show_list(C);}链式存储结构:#include#include#includetypedefstructlinknode{floatcoef;intexpn;structlinknode*next;}Node;voidcreate_link_list(Node*L){Node*p,*q;intn=1;floatx=1;q=L;printf("请按多项式指数由大
8、到小输入系数和指数:");《算法设计与分析》实验报告-7-printf("提示:系数和指数间用空格间隔,每组数据之间用回车间隔(系数和指数为0时结束输入)");while(fabs(x)>0.000001){scanf("%f%d",&x,&n);if(fabs(x)>0.00001){p=(Node*)malloc(sizeof(Node));p->coef=x