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

上传人:小飞机 文档编号:3191195 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.27KB
返回 下载 相关 举报
一元多项式的表示与相加运算.docx_第1页
第1页 / 共6页
一元多项式的表示与相加运算.docx_第2页
第2页 / 共6页
一元多项式的表示与相加运算.docx_第3页
第3页 / 共6页
一元多项式的表示与相加运算.docx_第4页
第4页 / 共6页
一元多项式的表示与相加运算.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一元多项式的表示与相加运算.docx》由会员分享,可在线阅读,更多相关《一元多项式的表示与相加运算.docx(6页珍藏版)》请在三一办公上搜索。

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

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

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

4、e(void) 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); s-cofe = c; s-expn = e; rear-next = s;

5、 rear = s; printf(系数:); scanf(%d,&c); printf(n); printf(指数:); scanf(%d,&e); printf(n); rear-next = NULL; return (head); 两多项式相加 Polynomial* AddPolyn(Polynomial* pa,Polynomial* pb) Polynomial *qa = pa-next; Polynomial *qb = pb-next; Polynomial *headc, *pc, *qc; pc=(Polynomial *)malloc(sizeof (Polynomi

6、al); pc-next = NULL; headc = pc; while(qa != NULL&qb != NULL) qc = (Polynomial *)malloc(sizeof(Polynomial); if(qa-expn expn) qc-cofe = qa-cofe; qc-expn = qa-expn; qa = qa-next; else if(qa-expn = qb-expn) qc-cofe = qa-cofe+qb-cofe; qc-expn = qa-expn; qa = qa-next; qb = qb-next; else qc-cofe = qb-cofe

7、; qc-expn = qb-expn; qb = qb-next; if(qc-cofe != 0) qc-next = pc-next; pc-next = qc; pc = qc; else free(qc); while(qa != NULL) qc = (Polynomial *)malloc(sizeof (Polynomial); qc-cofe = qa-cofe; qc-expn = qa-expn; qa = qa-next; qc-next = pc-next; pc-next = qc; pc = qc; while(qb != NULL) qc = (Polynomi

8、al *)malloc(sizeof (Polynomial); qc-cofe = qb-cofe; qc-expn = qb-expn; qb = qb-next; qc-next = pc-next; pc-next = qc; pc = qc; return (headc); 多项式的输出 void PrintPolyn(Polynomial* p) Polynomial* q; int flag = 1; q = p-next; if(!q) putchar(0); printf(n); return; while(q) if(q-cofe0&flag!=1) putchar(+);

9、 if(q-cofe!=1&q-cofe!=-1) printf(%d,q-cofe); if(q-expn=1) putchar(X); else if(q-expn) printf(X%d,q-expn); else if(!q-expn) putchar(1); else if(q-expn=1) putchar(X); else printf(X%d,q-expn); if(q-cofe=-1) if(!q-expn) printf(-1); else if(q-expn=1) printf(-X); else printf(-X%d,q-expn); q = q-next; flag

10、+; printf(n); 主函数 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;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号