好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

7页
  • 卖家[上传人]:F****n
  • 文档编号:98118185
  • 上传时间:2019-09-08
  • 文档格式:DOC
  • 文档大小:50.50KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称: 一元多项式的表示与相加运算 专业名称: 通信工程班 级: 通工1312 学生姓名: 周鹏飞学号(8位): 指导教师: 陈琳实验日期: 1. 实验目的及实验环境1、实现单链表的建立2、实现一元多项式的表示3、实现一元多项式的相加运算4、VC++6.0运行环境二. 实验内容1、实现一元多项式的相加运算三.方案设计为实现多项式的相加运算1)用两个单链表分别表示两个一元多项式2)多项式向相加的运算规则 指数相同项的对应系数相加,若和不为0,则构成“和多项式”中的一项 指数不相同的项仍按升幂顺序复抄到“和多项式”中 以单链表polya和polyb分别表示两个一元多项式A和B,A+B的求和运算,就等同于单链表的插入问题,因此“和多项式”中的结点无需另生成 为实现处理,设p、q分别指向单链表polya和poly b的当前项,比较p、q结点的指数项,由此得到以下运算规则: 若p->expexp,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。

      若p->exp=q->exp,则将两个结点中的系数相加,当和不为0是修改结点p的系数域,释放q结点;若和尾0,则和多项式中无此项,从A中删去p结点,同时释放p和q结点若p->exp>q->exp,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移四.测试数据及运行结果截图如下: 五.总结实验过程中遇到的问题及解决办法:问题:写完程序后,出现错误解决方法:查看程序提示,双击左键,寻找错误点找到错误,并进行修改 不能熟练运用链栈及指针 解决办法:查阅书籍,提高自己对链表及指针的认识,掌握使用链表及指针的技巧 对设计及调试过程的心得体会:(1) 编写的程序要按照正当的程序要求,不能遵循人的思维2) 编写程序时注意对链栈及指针的使用,注意各个出错的点及逻辑性错误3) 提高自己对链表与指针的认识 六.附录:源代码(电子版)实现代码如下: (1)建立多项式Polynomial * Create(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; rear = s; printf("系数(当系数输入为零时,多项式结束):"); scanf("%d",&c); printf("\n"); printf("指数:"); scanf("%d",&e); printf("\n"); } rear->next = 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->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; } 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; 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);} (3) 多项式的输出void PrintPolyn(Polynomial* p){ Polynomial* q; int flag = 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'); 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++; } printf("\n");}(4) 主函数void main(void) { Polynomial * polya,* polyb, * q; printf("\t\t\t\t欢迎使用\n"); printf("\n请输入第一个多项式:\n\n"); polya=Create(); /*调用建立链表函数,创建多项式A*/ PrintPolyn(polya); printf("\n请输入第二个多项式:\n\n"); polyb=Create(); /*同理,创建B*/ PrintPolyn(polyb); printf("\n多项式的和为:\n\n"); q=AddPolyn(polya,polyb); /*调用一元多项式相加函数*/ PrintPolyn(q); /*调用输出函数,打印结果*/ printf("\n"); getch();}解决党委自身和基层党支部存在的的突出问题,发挥各村、社区、机关单位党支部在当前城市征迁、园区建设、招商引资、服务群众、维护稳定的作用,我镇党委高度重视,制定了切合临淮实际的活动实施方案,按照中央规定的活动步骤和要求扎实有效的开展了基层组织建设年活动。

      点击阅读更多内容
      相关文档
      高等学校学生手册.doc 2025年区教育系统招聘编外教师储备人才事业单位考试押题.docx 2025年秋季青岛版三年级数学上册认识轴对称现象教学课件.pptx 2025年秋季青岛版三年级数学上册用乘法估算解决问题教学课件.pptx 2025年秋季青岛版三年级数学上册两、三位数乘一位数的笔算(不进位)教学课件.pptx 2025年秋季青岛版三年级数学上册1200张纸有多厚教学设计范文.docx 2025年秋季青岛版三年级数学上册多位数除以一位数教学课件.pptx 2025年秋季青岛版三年级数学上册认识平移、旋转现象教学课件.pptx 2025年秋季青岛版三年级数学上册多位数乘一位数教学设计范本.docx 2025年秋季青岛版三年级数学上册认识平移与旋转教学设计范文.docx 2025年秋季青岛版三年级数学上册乘数中间有0或末尾有0的乘法教学课件.pptx 2025年秋季青岛版三年级数学上册两位数乘一位数的笔算(进位)教学课件.pptx 2025年秋季青岛版三年级数学上册《两、三位数乘一位数的笔算(不进位)》教学设计与意图.docx 2025年秋季青岛版三年级数学上册我学会了吗教学课件.pptx 2025年连云港市妇幼保健院招聘专业技术人员考试笔试试题.docx 2025年深圳市大鹏新区发展和财政局招聘考试笔试试卷.docx 2025年绵阳市梓潼县财政投资评审中心招聘考试试题.docx 2025年来宾市妇幼保健院招聘考试笔试试题.docx 2025年无极县教育系统招聘教师考试笔试试卷.docx 2025年灵山县第三中学调配教师考试笔试试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.