



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一元稀疏多项式的加法运算一、需求分析1、 要求用带头结点的单链表存储两个多项式,然后进行多项式加法运算,存入另一个单链表中。2、 从键盘输入多项式a的项数,然后分别输入每项的系数和指数;类此输入多项式b。3、 测试数据:(1)、(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)(2)、(x+x100)+(x100+x200)=(x+2x100+x200)(3)、(2x+5x8-3x11)+(7-5x8+11x9)=(7+2x+11x9-3x11)二、设计1、 设计思想(1)、存储结构:带头结点的单链表(2)、主要算法基本思想先输入多项式的项数j,建立一个循环,分别进行链表的插入操作,插入时就是建立空结点存入系数和指数后再插入链表中。在插入的同时要比较与原链表中指数项的大小,从而建立由低次方到高次方的存储链表。在多项式相加时,将多项式a先存入多项式c中,此时c中的指数是升序排列,再将b中系数与指数存入,存入的方法是:指数比较寻找插入结点,指数相等时,进行系数相加操作,其他是建立一个空结点,存入b的系数与指数载插入c中。至于输入过程,多项式a、b、c均可输出,由于存储的按指数升序存的,所以不必进行查找了,只需要按一个个结点顺序输出即可。#include#include#includetypedef structfloat coef;int expn;count;typedef struct Nodefloat coef;/系数int expn;/指数struct Node *next;LinkList;void ListInitiate(LinkList *head)/链表初始化if(*head=(LinkList *)malloc(sizeof(LinkList)=NULL) exit(0);(*head)-next=NULL;void ListInsert(LinkList *head,count L)/链表插入操作LinkList *p,*q;p=head;while(p-next!=NULL)/从系数由小到大排序的角度寻找插入结点if(p-next-expnL.expn)break;p=p-next;if(q=(LinkList *)malloc(sizeof(LinkList)=NULL)exit(0);q-coef=L.coef;q-expn=L.expn;q-next=p-next;p-next=q;int print(LinkList *head)/输出LinkList *p;p=head-next;if(p=NULL)/多项式为零时直接输出printf(0n);exit(0);while(p-coef=1&p-expn0)/指数不为零时系数为1时的输出printf(x%d,p-expn);p=p-next;if(p=NULL)return 0;else printf(+);while(p-next)printf(%gx%d,p-coef,p-expn);p=p-next;if(p-coef0)printf(+);printf(%gx%d,p-coef,p-expn);return 1;void Add(LinkList *a,LinkList *b,LinkList *c)/多项式a、b相加等于多项式cLinkList *p,*q,*s,*k;s=c;p=a-next;while(p!=NULL)/先将a存入c中if(q=(LinkList *)malloc(sizeof(LinkList)=NULL)exit(0);q-coef=p-coef;q-expn=p-expn;q-next=NULL;c-next=q;c=c-next;p=p-next;c=s;p=b-next;while(p!=NULL)/将b存入c中while(c-next!=NULL)&(p-expn)(c-next)-expn)/寻找插入结点c=c-next;if(c-next=NULL)/从最后插入if(q=(LinkList *)malloc(sizeof(LinkList)=NULL)exit(0);q-coef=p-coef;q-expn=p-expn;q-next=c-next;c-next=q;else if(p-expn=c-next-expn) /指数相等时系数相加 s=c;c=c-next;c-coef=c-coef+p-coef;if(c-coef=0)k=c;c=s;c-next=c-next-next;free(k);else if(p-expnc-expn&c-next!=NULL)/普通插入if(q=(LinkList *)malloc(sizeof(LinkList)=NULL)exit(0);q-coef=p-coef;q-expn=p-expn;q-next=c-next;c-next=q;p=p-next;void main()/主函数LinkList *a,*b,*c;count L;int i,j;ListInitiate(&a);ListInitiate(&b);ListInitiate(&c);printf(请输入a的项数:);scanf(%d,&j);for(i=0;ij;i+)printf(输入a的第%d项系数:,i+1);scanf(%g,&L.coef);printf(输入a的第%d项指数:,i+1);scanf(%d,&L.expn);ListInsert(a,L);printf(输入b的项数:);scanf(%d,&j);for(i=0;ij;i+)printf(输入b的第%d项系数:,i+1);scanf(%g,&L.coef);printf(输入b的第%d项指数:,i+1);scanf(%d,&L.expn);ListInsert(b,L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年翻译笔项目申请报告
- 商业计划书商业模型与财务预测工具
- 2025年纳米抗菌管项目提案报告
- 2025年洮南市面向社会公开招聘化工园区特勤站政府专职消防员聘用人员考前自测高频考点模拟试题及一套完整答案详解
- 2025辽宁沈阳盛京资产管理集团有限公司所属子公司沈阳国际陆港集团有限责任公司拟聘用人员模拟试卷及答案详解(夺冠系列)
- 产品质量升级保证承诺书3篇
- 山东省日照市2024-2025学年高二上学期开学考试地理试题(解析版)
- 企业员工手册编写及内容模板
- 小猫的日记我的宠物写物7篇
- 员工请假与加班审批流程模板
- 【《基于Java Web的网络题库和考试系统设计与实现》8900字(论文)】
- 学堂在线 实验室安全教育 章节测试答案
- 医院应急知识培训课件
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 2025年注册道路工程师执业资格基础考试应试辅导(公共基础)(上下册)
- 终极焊工考试试题及答案
- 国家能源安庆市2025秋招能源与动力工程类面试追问及参考回答
- 房屋安全性鉴定培训试题及答案解析
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 2025年知识产权普法知识竞赛题库附答案
- 黑龙江省齐齐哈尔市富拉尔基区2024-2025学年高一上学期期中考试生物试题含参考答案
评论
0/150
提交评论