一元多项式的表示与相加运算.doc

上传人:知****量 文档编号:69951894 上传时间:2023-01-12 格式:DOC 页数:10 大小:53.54KB
返回 下载 相关 举报
一元多项式的表示与相加运算.doc_第1页
第1页 / 共10页
一元多项式的表示与相加运算.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《一元多项式的表示与相加运算.doc》由会员分享,可在线阅读,更多相关《一元多项式的表示与相加运算.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一元多项式的表示与相加运算 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称: 一元多项式的表示与相加运算 专业名称: 通信工程班 级: 通工1312 学生姓名: 周鹏飞学号(8位): 03131044指导教师: 陈琳实验日期: 一. 实验目的及实验环境1、实现单链表的建立2、实现一元多项式的表示3、实现一元多项式的相加运算4、VC+6。0运行环境二。 实验内容1、实现一元多项式的相加运算三方案设计为实现多项式的相加运算1)用两个单链表分别表示两个一元多项式.2)多项式向相加的运算规则 指数相同项的对应系数相加,若和不为0,则构成“和多项式”中的一项。 指数不相同的项仍按升幂顺序复抄

2、到“和多项式中. 以单链表polya和polyb分别表示两个一元多项式A和B,A+B的求和运算,就等同于单链表的插入问题,因此“和多项式”中的结点无需另生成. 为实现处理,设p、q分别指向单链表polya和poly b的当前项,比较p、q结点的指数项,由此得到以下运算规则: 若p-expq-exp,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 若pexp=q-exp,则将两个结点中的系数相加,当和不为0是修改结点p的系数域,释放q结点;若和尾0,则和多项式中无此项,从A中删去p结点,同时释放p和q结点。若pexpqexp,则结点q所指的结点应是“和多项式中的一项,将结点q插入在结

3、点p之前,且令指针q在原来的链表上后移。四测试数据及运行结果截图如下: 五总结实验过程中遇到的问题及解决办法:问题:写完程序后,出现错误.解决方法:查看程序提示,双击左键,寻找错误点。找到错误,并进行修改。 不能熟练运用链栈及指针 解决办法:查阅书籍,提高自己对链表及指针的认识,掌握使用链表及指针的技巧 对设计及调试过程的心得体会:(1) 编写的程序要按照正当的程序要求,不能遵循人的思维。(2) 编写程序时注意对链栈及指针的使用,注意各个出错的点及逻辑性错误。(3) 提高自己对链表与指针的认识. 六附录:源代码(电子版)实现代码如下: (1)建立多项式Polynomial Create(voi

4、d)Polynomial head, rear, s;int c, e;head = (Polynomial *)malloc(LEN); /建立多项式头结点rear = head; /rear始终指向单链表的尾,便于尾插法建表printf(”系数(当系数输入为0时,多项式结束):”);scanf(%d”,c); printf(”n);printf(指数:”);scanf(”d,&e); printf(”n”);while(c!=0)s = (Polynomial )malloc(LEN);scofe = c;sexpn = e;rearnext = s;rear = s;printf(系数(

5、当系数输入为零时,多项式结束):”);scanf(%d”,&c); printf(”n”);printf(”指数:);scanf(%d,e); printf(”n”); rearnext = NULL;return (head);(2) 两多项式相加Polynomial* AddPolyn(Polynomial* pa,Polynomial pb)Polynomial qa = pa-next;Polynomial *qb = pb-next;Polynomial *headc, pc, qc;pc=(Polynomial )malloc(sizeof (Polynomial));pc-nex

6、t = NULL;headc = pc;while(qa != NULL&qb != NULL)qc = (Polynomial *)malloc(sizeof(Polynomial);if(qaexpn qb-expn)qccofe = qacofe;qcexpn = qa-expn;qa = qa-next;else if(qa-expn = qbexpn)qc-cofe = qa-cofe+qb-cofe;qc-expn = qa-expn;qa = qanext;qb = qb-next;elseqccofe = qb-cofe;qc-expn = qb-expn;qb = qb-ne

7、xt;if(qccofe != 0)qcnext = pc-next;pc-next = qc;pc = qc;elsefree(qc);while(qa != NULL)qc = (Polynomial *)malloc(sizeof (Polynomial);qccofe = qacofe;qcexpn = qa-expn;qa = qanext;qc-next = pcnext;pc-next = qc;pc = qc;while(qb != NULL)qc = (Polynomial )malloc(sizeof (Polynomial);qc-cofe = qbcofe;qcexpn

8、 = qbexpn;qb = qbnext;qc-next = pc-next;pcnext = qc;pc = qc;return (headc); (3) 多项式的输出void PrintPolyn(Polynomial p)Polynomial* q;int flag = 1;q = p-next;if(!q)putchar(0);printf(n);return;while(q)if(qcofe0&flag!=1)putchar(+);if(qcofe!=1qcofe!=1)printf(”%d”,qcofe);if(q-expn=1)putchar(X);else if(qexpn)

9、printf(X%d”,qexpn);elseif(!qexpn)putchar(1);else if(qexpn=1)putchar(X);else printf(Xd,qexpn);if(q-cofe=1)if(!q-expn)printf(-1”);else if(q-expn=1)printf(-X”);else printf(Xd”,q-expn);q = qnext;flag+;printf(”n”);(4) 主函数void main(void) Polynomial * polya,* polyb, q;printf(”tttt欢迎使用n);printf(”n请输入第一个多项式:nn”);polya=Create(); /*调用建立链表函数,创建多项式A*/PrintPolyn(polya);printf(n请输入第二个多项式:nn”);polyb=Create(); /*同理,创建B/PrintPolyn(polyb);printf(n多项式的和为:nn);q=AddPolyn(polya,polyb); /*调用一元多项式相加函数*/PrintPolyn(q); /调用输出函数,打印结果/printf(n);getch();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁