ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:172.88KB ,
资源ID:18279043      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18279043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一元稀疏多项式计算器实现完整实现版详细源码Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

一元稀疏多项式计算器实现完整实现版详细源码Word文档下载推荐.docx

1、返回L中第1个与e满足关系cmp()的元素的位序。 若这样的元素不存在,则返回值为0。SetCurElem(&p, e) 线性表L已存在,且非空。用元数e更新p所指结点中元数的值。GetCurElem(p)返回p所指结点中数据元数的值。InsFirst (&L, h, s) 线性表L已存在,h结点在L中。在L的s所指结点插入在h结点之后,L的长度加1。 DelFirst (&L, h, q) 线性表L已存在且非空,q结点在L中且不是尾结点 删除链表L中的h结点之后的结点q,L的长度减1。MakeNode(&p, e)创建了一个结点p,其data部分为e。FreeNode(&p)结点p存在且非空

2、。释放结点p空间。Append(LinkList &L,Link s)s及s以后的结点链接到了原L之后,L的长度增加链上的结点数。ListEmpty(L)若线性链表L为空表,则返回TRUE,否则返回FALSE。GetHead(L)返回线性链表L中头结点的位置。NextPos(L, p)返回p所指结点的直接后继的位置,若没后继,则返回NULL。int cmp(a, b)存在两个元数。比较a,b的数值,分别返回-1,0,1。 ADT LinkList2.一元多项式的抽象数据类型定义为:ADT PolynomialD ai | aiTermSet, i=1,2,.,m, m0 TermSet中的每个

3、元素包含一个表示系数的实数和表示指数的整数|ai-1, aiD, 且ai-1中的指数值next=L.tail-next=NULL; return OK;/ 返回线性表L中头结点的位置。Position GetHead(LinkList &/已知p指向线性链表L中的一个结点,返回p所指结点的直接后驱的位置/若无后继,返回NULLPosition Nextpos(LinkList &L,Link p);/已知p指向线性表L中的一个结点,返回p所指结点中数据元素的值。ElemType GetCurElem(Link p);/已知p指向线性链表L中的一个结点,用e更新p所指结点中数据元素的值。Stat

4、us SetCurElem(Link &p,float e); /已知h指向线性链表的某个结点,将q所指的结点插入在h之后。Status InsFirst(Link h,Link q); s-next=h-next; h-next=s; L.len+; if(!s-next) L.tail=s;/已知h指向线性链表的头结点,删除线性链表第一个指结点并以q返回Status DelFirst(Link h,Link &q);/若线性链表L为空,则返回TRUE,否则返回FALSE。Status ListEmpty(LinkList L); if(L.head=L.tail=NULL) return

5、TRUE; else return FALSE;/将指针s所指的一连串结点连接在线性表L的最后一个结点之后,并改变链表L的尾指针指向新的尾结点。Status Append(polynomial &L,Link s); i=0; q=s; while(s) /找到新的tail,计数s长度 p=s; s=s- i+; L.tail-next=q; L.tail=p; L.len+=i;/判断已知链表中,是否存在相同的元素e,若存在返回TURE,且q指示L中第一个与e相同的结点元素;/否则返回FALSE,并q指示L中第一个稍大于e的元素的直接前驱的位置Status LocateElem(LinkLi

6、st L,ElemType e,Position & p=L.head; while(p-next) s=p; p=p- m=p-data; if(cmp(e,m )=0) q=p; return FALSE;/整表删除void ClearList(LinkList & if(L.head!=L.tail) p=q=L.head- while(p! p=q- free(q); L.tail=L.head;/依a的指数值)b的指数数值,分别返回-1,0,+1int cmp(term a, term b) ; if(a.expn return 1;3.基于多项式的操作(部分伪码如下)/输入m项的系

7、数和指数,建立表示一元多项式的有序链表Pvoid CreatPolyn(polynomial &p,int m);InitList(p);h=GetHead(p);e.coef=0.0;e.expn=-1;SetCurElem(h,e);for(int i=1;i=m;i+) coute.coefe.expn;endl;LocateElem(p,e,q)/当前链表中不存在该指数项 if(MakeNode(s,e) InsFirst(p,q,s);/生成节点并插入链表 else return; else q-data.coef+=e.coef; +c; m=m-c;/销毁一元多项式Pvoid D

8、estroyPolyn(polynomial & while(p.head -next!=NULL) k=p.head; p.head =p.head - free(k); free(&/打印输出一元多项式Pvoid PrintPolyn(polynomial p);ha=GetHead(p);coutm, for(int i=1;i+) qa=NextPos(p,ha); e=GetCurElem(qa);e.coef,e.expn hc=GetHead(Pc); while(qa) a=GetCurElem(qa); qb=GetHead(Pb); qb=qb- while(qb) b=G

9、etCurElem(qb); c.coef=a.coef*b.coef; c.expn=a.expn+b.expn; MakeNode(qc,c); InsFirst(Pc,hc,qc); hc=NextPos(Pc,hc); qc=NextPos(Pc,qc); DestroyPolyn(Pb); ClearList(Pa); Pa.head=Pc.head; Pa.tail=Pc.tail; Pa.len=Pc.len;/计算多项式在x处的值double Evaluation(double x, polynomial p);/计算多项式P的导函数Pvoid Derivative( poly

10、nomial &p ); InitList(Pb); hb=GetHead(Pb); b.coef=a.coef*a.expn; b.expn=a.expn-1; MakeNode(qb,b); InsFirst(Pb,hb,qb); hb=NextPos(Pb,hb); qb=NextPos(Pb,qb); qb=NULL; Pa.head=Pb.head; Pa.tail=Pb.tail; Pa.len=Pb.len;4.主函数和其他函数的伪码算法int main() Initialization(); ReadCommand(cmd); while (cmd != q & cmd !Q)

11、 Interpret(cmd); display(); ReadCommand(cmd);void Initialization() pre_cmd = cmd = InitList(La); InitList(Lb);void display() system(cls); /清屏在屏幕上方显示操作命令清单:CreatePolynomial_a -1 CreatePolynomial_b -2 a+b - a-b a*b -* Derivation of a -d Calculate a in x -c Quit -q 在屏幕下方显示操作命令提示框:Enter a operation code

12、(1,2,+,_,*,c,d OR q): void ReadCommand(char &cmd) /读入操作命令符 显示检入操作命令符的提示信息; do cin cmd; while (!strchr(cmdsets, cmd);void Interpret(char cmd) /解释执行操作命令cmd switch (cmd) case 1: ClearList(La); cout 请输入第一个一元多项式的项数 n; cout endl; CreatPolyn(La, n);/输入多项式 SortPolyn(La); break;2 ClearList(Lb); endl 请输入第二个一元

13、多项式的项数 m; CreatPolyn(Lb, m); SortPolyn(Lb);+两多项式相加的结果: AddPolyn(La, Lb); PrintPolyn(La, La.len); Expression(La,La.len); getchar();-两多项式相减的结果: SubtractPolyn(La, Lb);*两多项式相乘的结果: MultiplyPolyn(La, Lb);cC请输入x的值 x;多项式a在 x 处的值为 CalPolyn(La, x);dD DerivPolyn(La);求导结果为 default:输入错误 5.函数的调用关系图反映了演示程序的层次结构四、调试分析1.一开始写求导部分代码时没有考虑常数项求导变零的情况,结果输出后常数项以系数为0指数为-1的形式输出,不符合规范。调试后加入if判断语句让常数项求导

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1