数据结构课程设计报告一元多项式加减乘除.docVIP

  • 181
  • 0
  • 约 32页
  • 2016-08-08 发布于重庆
  • 举报

数据结构课程设计报告一元多项式加减乘除.doc

数据结构课程设计报告一元多项式加减乘除

多项式想加减与乘与升降序 学 院 计算机科学与技术 专 业 信 息 安 全 学 号 201312070 学 生 姓 名 陶宝中 辅导教师姓名 2014年月 日 设计目的 建立一元多项式的顺序表和链式表,按程序提示输入每个项数据结束创建。借助元素在存储器中的相对位置来表示数据元素之间的关系,顺序表中第i个位置表示一元多项式的第i项的系数为第i个位置存放的内容,指数为i-1。创建一个一元多项式顺序表,对一元多项式的运算中会出现的各种情况进行分析,实现一元多项式的相加、相减、相乘操作。用链表来表示只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个term项结构和指向下一个节点的指针域,term又包括系数和指数两个域分别存放该项的系数、。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减、相乘操作。 一元多项式的加法 对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到和多项式中去。 一元多项式的减法 对于两个一元多项式中所有指数相同的项,对应系数相减,若其差不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,将其按减法规则复抄到差多项式中去。 一元多项式的乘法 将乘法运算分解为一系列的加法运算利用两个一元多项式相加的算法实现。 一元多项式项的指数比较 比较相邻两项的指数的大小。按升序排列时,前面项的指数大于后面项的指数就交换其项的位置。按降序序排列时,后面项的指数大于前面项的指数就交换其项的位置。 一元多项式运算结果升降排序 一元多项式运算结果选择调用降序或升序排序函数。 一元多项式的输出 将选择的运算操作结果输出。 一元多项式的销毁 销毁已建立的两个多项式,释放空间。 3 程序运行平台 VC++6.0。 编译,链接,执行。 Windows XP。 4 总体设计 图4。1 系统总体框架图 5 程序类的说明 (1)Ploy结构声明 typedef struct //顺序表结构声明 { int a[N];//记录多项式 int len;//记录多项式的长度 }Ploy; (2)term结构声明 typedef struct //项的表示 { float coef; //系数 int expn; //指数 }term; (3)LNode结构声明 typedef struct LNode { term data; //term多项式值 struct LNode *next; }LNode,*LinkList; //两个类型名 typedef LinkList polynomail; //用带头结点的有序链表表示多项式 6 模块分析 整个流程图如图所示: 图1 6.1 创建模块 6.1.1、链式存储结构的一元多项式的创建 程序源代码: polynomail creatpolyn(polynomail P,int m) { //输入m项的系数和指数,建立表示一元多项式的有序链表P polynomail r,q,p,s,Q; int i; P=(LNode*)malloc(sizeof(LNode)); r=P; for(i=0;im;i++) { s=(LNode*)malloc(sizeof(LNode)); printf(请输入第%d项的系数和指数:,i+1); scanf(%f%d,s-data.coef,s-data.expn); r-next=s; r=s; } r-next=NULL; if(P-next-next!=NULL) { for(q=P-next;q!=NULL/*q-next!=NULL*/;q=q-next)//合并同类项 for(p=q-next,r=q;p!=NULL;) if(q-data.expn==p-data.expn) { q-data.coef=q-data.coef+p-data.coef; r-next=p-next; Q=p

文档评论(0)

1亿VIP精品文档

相关文档