北京邮电大学信息与通信工程学院第1页数据结构实验报告实验名称:实验1——一元多项式Polynomial学生姓名:孙广东班级:2011211109班内序号:08学号:2011210251日期::++语言的基本编程方法,、:利用线性表实现一个一元多项式Polynomialf(x)=a0+a1x+a2x2+a3x3+…+anxn要求:(选作)(选作)(),故选择线性表来实现,在这个程序中我采用的是带头结点的单链表结构,每个结点代表一个项,多项式的每一项可以用其系数和指数唯一的表示。如果采用顺序存储,那么对于结点的插入和删除的操作会比较麻烦,程序的时间空间复杂度增加,而且顺序表的结点个数动态增加不便,因为决定采用单链表的方式解决。本程序完成的主要功能::需要输入的信息有多项式的系数和指数,用来向系统动态申请内存;系数和指数用来构造每个结点,形成链表。在构造链表的时候我添加了出泡排序以及合并同类项的功能,因此输入时没有要求。输出即是将多项式的内容向屏幕输出。:多项式的加减要指数相同即是同类项才能实现,所以在运算时北京邮电大学信息与通信工程学院第2页要注意判断指数出现的各种不同的情况,分别考虑可能出现的不同情况。将每项运算得到的结果都插入到新的链表中,形成结果多项式。多项式相减可视为加上第二个多项式的相反数。:多项式的求导根据数学知识,就是将每项的系数乘以指数,将指数减1即可,将每项得到的结果更新到结果多项式的链表中。:由用户输入x的值,然后求出每项的值相加即可。,其定义的结点包括三部分:系数、指数以及下一个结点的地址。示意图如下:1输入多项式2申请动态内存创建新结点;3输入各项的系数以及指数,分别存入coef和expn;4再将输入的系数以及指数赋给每一个结点的coef和expn域,直到输入系数为0时结束;5利用头插法将每个结点加入链表,形成一元多项式链表。6循环输入:直到系数为0·伪代码:*s=newelement;->coef=mod;->exp=ind;->next=front->next;->next=s;>>mod>>ind;。时间复杂度:o(n)//n为链表长度空间复杂度:o(n):for(inti=0;i<n-1;i++)1.{2element*p=front;3element*q=p;4p=p->next;4for(intj=0;j<n-1;j++)5{nextcoef1expn1nextcoef1expn1nextcoef1expn1next……front北京邮电大学信息与通信工程学院第3页6if(j!=0)
实验1-一元多项式实验报告 来自淘豆网m.daumloan.com转载请标明出处.