数据结构实验,多项式计算器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验,多项式计算器

实验题目:多项式运算器 实验内容:1、熟悉编程环境 2、用链式存储结构实现稀疏一元多项式运算器 实验目的和要求: 通过本实验,掌握VC++6.0的基本使用,包括源程序的输入,编译运行及调试。调试的目的是找程序的运行错误,通过DEBUG菜单设置断点实现。 用链式存储结构实现一元多项式的运算。 熟练掌握指针和链表的基本操作,利用菜单进行功能选择。 功能基本要求:创建、显示、求和、求差、求值、销毁、清空、修改 实验算法: 数据结构描述: 输入的稀疏每一个多项式用一个链表存储,链表的每一个节点存储多项式的一个非零项。定义为LNode型结构体,其中保存该项的系数和指数。主函数中用一个数组存储每一个多项式的第一项的头指针以调用多项式。 函数和算法描述: 主函数main定义LNode*数组a[]存储每一个多项式头节点的地址,并构建菜单以选择调用函数进行多项式的操作,对多项式进行操作的函数返回新改动的多项式头结点地址。 Createpolyn函数用以创建一个多项式,在用户输入结束指令之前,不断的申请空间,构建LNode型结点并加至构建的链表的表尾,输入结束指令之后,表尾设NULL并返回表头指针。 Printpolyn函数用以在屏幕上打印多项式,接收需要打印的多项式链表的头结点,构造循环体在表尾之前,不断以mx^n格式打印对应结点中的数据。 Copypolyn函数用以复制多项式,接收需要复制的多项式a和复制位置b的指针,构造循环体,在a到表尾之前循环,在b对应的链表中构建新的结点,结点上的数据赋值为a中对应的值,返回b的头结点地址。 Addpolyn函数用以求两个已知多项式a、b的和存入c,先构建循环体,在a、b链表都未进行到表尾时,比较两个结点中的次数值,如果相同,将系数相加赋于c的当前结点,如果不同,将次数较小多项式y(a或b)的结点赋值给c当前结点,在将y链表向后推。 Subtract函数用以求两多项式的差,类似求和算法。 Value函数用以求一个多项式的值,接收x的值,构建循环体,在表尾之前循环以遍历多项式链表。内置循环体,以次数n为限循环,求出x^n的值,乘以系数并将每一项的值叠加得值。 Destroypolyn函数用以销毁已有的多项式,将此多项式链表的空间FREE掉,返回空指针。 Clearpolyn函数用以清空多项式,构建循环体,将多项式的各项的系数、指数置零。 时空分析: L= sizeof(struct LNode) 一个含有N项的多项式占用的储存空间为NL+1 主要函数的时间复杂度:(N项多项式) Createpolyn: N Printpolyn: N Copypolyn: N Addpolyn:N1+N2 实验结果: 控制菜单: 显示多项式: 多项式求值: 求和、求差、复制、销毁、清空也均能得到正常结果 源代码: #includestdio.h #include stdlib.h #define N 20 #define L sizeof(struct LNode) struct LNode { int n; double m; struct LNode*next; }; struct LNode* createpolyn (struct LNode*p) { double i=1; int j,a=0;struct LNode*u; p=(struct LNode*)malloc(L); p-m=0; p-n=0; p-next=NULL; u=p; while(i!=0) { printf(从低次到高次输入X的非零项的次数及系数:0 0表示结束:\n); scanf(%d %lf,j,i); if(i!=0){ p-next=(struct LNode*)malloc(L); p=p-next; p-m=i;p-n=j; } }; p-next=NULL; printf(completed!\n); return(u); } void printpolyn (struct LNode*p) { p=p-next; while (p!=NULL) { printf(+%lfX^%d\n,p-m,p-n); p=p-next; } //printf(NULL); } struct LNode* copypolyn (struct LNode*p,struct LNode*q) {struct LNode* u; q=(struct L

文档评论(0)

youshen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档