版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一元多项式的表示与相加运算一元多项式的表示与相加运算一元多项式的表示与相加运算西安邮电大学(计算机学院)课内实验报告实验名称:一元多项式的表示与相加运算专业名称:通信工程班级:通工1312学生姓名:周鹏飞学号(8位):03131044指导教师:陈琳实验日期:实验目的及实验环境1、实现单链表的建立2、实现一元多项式的表示3、实现一元多项式的相加运算4、VC++6。0运行环境二。实验内容1、实现一元多项式的相加运算三.方案设计为实现多项式的相加运算1)用两个单链表分别表示两个一元多项式.2)多项式向相加的运算规则eq\o\ac(○,1)指数相同项的对应系数相加,若和不为0,则构成“和多项式”中的一项。eq\o\ac(○,2)指数不相同的项仍按升幂顺序复抄到“和多项式"中.以单链表polya和polyb分别表示两个一元多项式A和B,A+B的求和运算,就等同于单链表的插入问题,因此“和多项式”中的结点无需另生成.为实现处理,设p、q分别指向单链表polya和polyb的当前项,比较p、q结点的指数项,由此得到以下运算规则:eq\o\ac(○,1)若p-〉exp〈q->exp,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。eq\o\ac(○,2)若p—>exp=q-〉exp,则将两个结点中的系数相加,当和不为0是修改结点p的系数域,释放q结点;若和尾0,则和多项式中无此项,从A中删去p结点,同时释放p和q结点。eq\o\ac(○,3)若p—>exp>q—>exp,则结点q所指的结点应是“和多项式"中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。四.测试数据及运行结果截图如下:五.总结实验过程中遇到的问题及解决办法:问题:写完程序后,出现错误.解决方法:查看程序提示,双击左键,寻找错误点。找到错误,并进行修改。 不能熟练运用链栈及指针解决办法:查阅书籍,提高自己对链表及指针的认识,掌握使用链表及指针的技巧对设计及调试过程的心得体会:编写的程序要按照正当的程序要求,不能遵循人的思维。编写程序时注意对链栈及指针的使用,注意各个出错的点及逻辑性错误。提高自己对链表与指针的认识.六.附录:源代码(电子版)实现代码如下:(1)建立多项式Polynomial*Create(void){ Polynomial*head,*rear,*s; intc,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; 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(Polynomial)); pc->next=NULL; headc=pc; while(qa!=NULL&&qb!=NULL) { qc=(Polynomial*)malloc(sizeof(Polynomial)); if(qa—>expn〈qb->expn) { qc—>cofe=qa—〉cofe; qc—〉expn=qa->expn; qa=qa-〉next; } elseif(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; 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=(Polynomial*)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);}多项式的输出voidPrintPolyn(Polynomial*p){ Polynomial*q; intflag=1; q=p->next; if(!q) { putchar('0'); printf("\n"); return; } while(q) { if(q—>cofe〉0&&flag!=1) putchar(’+'); if(q—〉cofe!=1&&q—〉cofe!=—1) { printf(”%d”,q—>cofe); if(q-〉expn==1) putchar('X'); elseif(q—〉expn) printf("X^%d”,q—>expn); } else { if(!q—>expn) putchar(’1'); elseif(q—>expn==1) putchar('X’); else printf("X^%d",q—>expn); } if(q->cofe==—1) { if(!q->expn) printf("-1”); elseif(q->expn==1) printf("-X”); elseprintf("—X^%d”,q-〉expn); } q=q—〉next; flag++; } printf(”\n”);}主函数voidmain(void){ Polynomial*polya,*polyb,*q; printf(”\t\t\t\t欢迎使用\n"); printf(”\n请输入第一个多项式:\n\n”); polya=Create();/*调用建立链表函数,创建多项式A*/ PrintPolyn(polya); printf("\n请输入第二个多项式:\n\n”)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024个人财产连带责任担保协议样本版B版
- 2024企业劳动协议标准化管理方案版
- 上海市奉贤区2024-2025学年九年级上学期期中英语试题(解析版)
- 2024年专业化妆品租赁协议版B版
- 佳木斯大学《政府与非营利组织会计》2021-2022学年第一学期期末试卷
- 2024商业门面租赁范本协议版B版
- 暨南大学《综合英语Ⅳ》2021-2022学年第一学期期末试卷
- 暨南大学《数据库系统原理》2021-2022学年第一学期期末试卷
- 2024年专业电工施工承包合同样本一
- 暨南大学《材料力学》2020-2021学年第一学期期末试卷
- 铝合金模板工程水电精确定位施工工艺
- 红色大气乘风破浪开拓未来年会PPT模板课件
- 顺丰快递公司视觉识别VI手册(清晰电子版)
- 云南省普通高中学生成长记录手册完整版
- 家庭教育讲座必备(课堂PPT)
- 初期流动管理制度管理办法
- 第八章配电网自动化主站系统
- 水库坝型(课堂PPT)
- 人教版数学四年级上册《商不变的性质》课件
- 《道德与法治》一年级上册第一单元第三课“我认识您了”教案 说课稿 教学反思
- 机场大道连续箱梁转体施工技术
评论
0/150
提交评论