网站大量收购独家精品文档,联系QQ:2885784924

数据结构(C语言)一元稀疏多项式计算器.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C语言)一元稀疏多项式计算器

实验报告一 题目:编制一个一元稀疏多项式计算器 班级:1302018 姓名:王雪 学号 完成日期:2014.4.5 一、需求分析 1、一元稀疏多项式简单计算器的功能是: 1.1 输入并建立多项式; 1.2 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,………cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 1.3多项式a和b相加,建立多项式a+b; 1.4 多项式a和b相减,建立多项式a-b。 2、设计思路: 2.1 定义线性表的动态分配顺序存储结构; 2.2 建立多项式存储结构,定义指针*next 2.3利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式 2.4演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。多项式显示的格式为:c1x^e1+c2x^e2+…+cnx^en 3、设计思路分析 要解决多项式相加,必须要有多项式,所以必须首先建立两个多项式,在这里采用链表的方式存储链表,所以我将结点结构体定义为 序数coef 指数exp指针域next 运用尾插法建立两条单链表,以单链表和poly分别表示两个一元多项式和,的求和运算等同于单链表的插入问题(将单链表poly中的结点插入到单链表poly中),因此“和多项式”中的结点无须另生成。 为了实现处理,设p、q分别指向单链表polya和polyb的当前项,比较p、q结点的指数项,由此得到下列运算规则: ① 若p-expq-expn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 ② 若p-exp=q-expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。 ③ 若p-expq-expn,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。 为实现上述程序的功能,应以带头结点的单链表表示多项式。为此,需要一个抽象数据类型:单链表。 2.1单链表的抽象数据类型定义 ADT LinkList{ 数据对象:D={ai|ai∈TermSet,i=1,2,…,m,m≥0 TermSet中的每个元素包含一个表示系数的实数和表示指数的整数} 数据关系:R1={ai-1,aiai-1,ai∈D且ai-1中的指数值ai中的指数值,i=2,…,n} 基本操作: CreatLinkList(p,m) 操作结果:输入m项的系数和指数,建立一元多项式p。 DestoryLinkList(p) 初始条件:一元多项式p已存在。 操作结果:销毁一元多项式p. PrintLinkList(p) 初始条件:一元多项式p已存在。 操作结果:打印输出一元多项式p. AddLinkList(pa,pb) 初始条件:一元多项式pa和pb已存在。 操作结果:完成多项式的相加运算,即:pa=pa+pb,并销毁一元多项式pb. SubtractLinkList(pa,pb) 初始条件:一元多项式pa和pb已存在。 操作结果:完成多项式的想减运算,即:pa=pa-pb,并销毁一元多项式pb. }ADT LinkList 2.2本程序包括个模块: 1)主程序模块: Void main(){ 初始化; 输出菜单; While(1){ 接受命令; 处理命令; }(循环一直为真直至接受退出命令); 2)单链表单元模块——实现单链表的抽象数据类型; 3)结点结构单元模块——定义单链表的结点结构。 三、详细设计 3.1元素类型、结点类型和指针类型 typedef int Status; typedef int ElemType; typedef struct LNode{ ? ? float?? ? coef;??????????????????? ? //系数 ? ? ElemType? expn;???????????????? ? //指数 ? ? struct? ? LNode *next;??????????? }LNode,*LinkList; { //分配由p指向下一个多项式的头结点head、后继为空的结点,并返回TRUE, //若分配失败,则返回FALSE p= (LinkList)malloc(sizeof(struct LNode)); if(!p)return false; p=head;p-next=null;return ture; void FreeNode(LinkList p) {

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档