- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》课程设计
多项式计算
班级:
学号:
姓名:
指导老师:
多项式计算
问题描述
能够按照指数降序排列建立多项式;能够完成两个多项式的相加、相减和相乘,并将结果输出。
设计思路
这个程序的关键是多项式的创建和排列,以及相乘时系数相乘和指数相加、相加时相同指数的系数相加、相减时相同指数的系数相减。由于多项式拥有指数和系数(假设基数已定),所以可以定义一个包含指数系数的结构体,用单链表存储多项式的数据,所以结构体包含next指针。数据插入时比较两数的指数,按照降序排序,从表头的next开始,直至找到合适的位置,然后开始链表中数值的插入,如果相等则直接将指数相加,如果大于就将新数据插入到当前指向的前面,否则将新数据插入到最后。输入完数据后选择计算方式(相乘、相加、相减),多项式运算时要循环遍历整个多项式,多项式的每一组数据都要和另一个多项式整组数据相运算(每一个运算值都存储到新建的“多项式”链表中),直到两个多项式都遍历完结束。
数据结构设计
在模拟多项式对象时,为了简化处理,只取最核心的两个数据:多项式的系数和指数。前面提到,要用单链表操作,所以要加上个next指针,再由该结构体定义一个结点类型和指针类型。具体数据结构定义如下:
typedef struct node{
int xs; /*系数*/
int zs; /*指数*/
struct node * next; /*next指针*/
}Dnode,* Dnodelist;
功能函数设计
(1)链表初始化函数Creat_node()
带有头结点的头指针指向空(NULL)。
(2)多项式数据的创建函数Creat_Dmeth()
当链表初始化成功后,开始创建多项式。分别循环输入两个多项式的系数和指数,其中要用到插入函数。
(3)数据的插入函数Insert_node()
当创建多项式时,要用到此函数,即利用插入的方式将多项式的数据连接起来。再输入一组数据后,程序自动调用此函数,插入时也进行着排序,从表头的next开始,一一比较指数大小,直到大于或等于当前指向的数据或遍历完所有数据时停止,然后开始链表中数值的插入,如果相等则直接将指数相加,如果大于就将新数据插入到当前指向的前面,否则将新数据插入到最后。
(4)多项式的显示函数Show()
从多项式表头的next开始,直到指向空(NULL),将系数与指数一一显示。
(5)选择运算方式的函数select()
三种选择:1为相乘,2为相加,3为相减;每一种选择调用相应的运算函数。
(6)多项式的运算函数:新建链表存储计算后的多项式
1、多项式相乘Mulresult()
创建两个指针分别指向两个多项式表头的next,使用两个while函数嵌套循环,遍历每一组数据,每遍历一次都将两组数据的系数相乘,指数相加,再利用插入函数将系数与指数存储到新建多项式的链表中。
2、多项式相加Addresult()
创建两个指针分别指向两个多项式表头的next,分别使用两个while函数独自循环,遍历各自的每一组数据,每遍历一次都将系数与指数存储到新建多项式的链表中。因为存储时利用到插入函数,而插入函数中有相同指数的系数相加功能,所以直接将两个多项式的数据依次插入到新的多项式中即可完成多项式相加。
3、多项式相减Subresult()
创建两个指针分别指向两个多项式表头的next,以两个指针同时不为空为条件循环遍历,如果当前多项式1的指数小于多项式2,则将当前多项式2的系数置负,指数不变,存入新建多项式中,指向多项式2的指针指向下一个;如果如果当前多项式1的指数大于多项式2,则将当前多项式1的系数指数不变,存入新建多项式中,指向多项式1的指针指向下一个;否则将多项式1的系数减去2的系数后存入新建多项式中,指数不变存入,再将两个指针同时指向下一个。结束循环后判断是哪一个多项式遍历完了,将未遍历完的多项式剩下的数据全部插入到新建多项式中。
(7)主函数main()
创建两个多项式的链表并且初始化,分别调用相应的多项式创建函数,创建成功后选择运算方式,再将运算结果输出显示。
程序代码
#includestdio.h
#includestdlib.h
typedef struct node{
int xs;
int zs;
struct node * next;
}Dnode,* Dnodelist; /*定义结构体*/
Dnodelist Creat_node(void) /*链表初始化*/
{
您可能关注的文档
- 《数据库课程设计实验报告-银行账户管理系统》.doc
- 《数据库课程设计报告-学生成绩管理系统》.doc
- 《数据库课程设计报告-图书管理系统》.doc
- 《数据库课程设计报告-学生信息管理系统》.doc
- 《数据库课程设计报告-学校教材订购系统》.doc
- 《数据库课程设计报告-学生档案管理系统》.doc
- 《数据库课程设计报告-图书借阅管理系统》.doc
- 《数据库课程设计报告-学生选课管理系统课程设计》.doc
- 《数据库课程设计报告-学生选课管理系统》.doc
- 《数据库课程设计报告-校友录系统设计》.doc
- CNAS-CL63-2017 司法鉴定-法庭科学机构能力认可准则在声像资料鉴定领域的应用说明.docx
- 12J7-3 河北《内装修-吊顶》.docx
- 12N2 河北省12系列建筑标准设计图集 燃气(油)供热锅炉房工程.docx
- 内蒙古 12S8 排水工程 DBJ03-22-2014.docx
- 山西省 12S10 12系列建筑标准设计 管道支架、吊架.docx
- 16J601-木门窗标准图集.docx
- 12J8 河北省12系列《 楼梯》.docx
- CNAS-GL37 2015 校准和测量能力(CMC)表示指南.docx
- CNAS-RL02-2016 能力验证规则.docx
- 津02SJ601 PVC塑料门窗标准.docx
文档评论(0)