- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》课设计报告
2012—2013学年第一学期
课程名称 数据结构
设计题目 用单链表实现集合的操作
专业班级
姓 名
学 号
指导教师
一元多项式相加
1.问题描述
已知A(x)=a0+a1x+a2x2+…+anxn 和 B(x)= b0+b1x+b2x2+…+bnxm ,并且在A(x)和B(x)中指数相差很多,求A(x)= A(x)+ B(x)。
2.基本要求
(1)设计存储结构表示一元多项式;
(2)设计算法实现一元多项式相加;
(3)分析算法的时间复杂度和空间复杂度.
设计思想
一元多项式求和实际上是合并同类项的过程,其运算规则为:(1)若两项的指数相等,则系数相加; (2)若两项的指数不相等,则将两项加在结果中。
一元多项式由n+1个系数唯一确定,因此,可以用一个线性表 来表示,每一项的系数i隐含在其系数ai的序号里。但是,当多项式的指数很高且变化很大时,在表示多项式的线性表中就会存在很多0元素。一个较好的存储方法就是只存非0元素,但是需要在存储非0元素系数的同时存储相应的指数。这样,一个一元多项式的每一个非0项可由系数和指数唯一表示。
由于两个一元多项式相加后,会改变多项式的指数和系数,因此采用顺序表不合适。采用单链表存储,则每一个非0项对应单链表中的一个节点,且单链表应按指数递增有序排列。
其中:
Coef是系数域,存放非0项的系数;
Exp是指数域,存放非0项的指数;
Next是指针域,存放指向下一个节点的指针。
将两个一元多项式用两个单链表存储后,如何实现二者相加呢?
设两个工作指针p和q,分别指向两个单链表的开始节点。通过对节点p的指针域和节点q的指针域进行比较进行同类项合并,则出现下列三种情况:
若p-exp小于q-exp,则节点p应为结果中的一个节点。
若p-exp大于 q-exp,则节点q应为结果中的一个节点,将q插入到第一个链表中节点p之前。
若p-exp等于q-exp,则节点p与节点q为同类项,将q的系数加到p的系数上。若相加结果不为0,则节点p应为结果中的一个节点,同时删除节点q;若相加结果为0;则表明结果中无此项,删除节点p和节点q。
代码:
#includeiostream.h
#includestdlib.h
#includestdio.h
typedef struct
{ float coef;//结点类型
int expn;
}polynomial;
typedef struct LNode
{ polynomial data;//链表类型
struct LNode *next;
}LNode,*Link;
void createLink(Link L,int n);
void printList(Link L);
void addPolyn(Link pc,Link pa,Link pb);
int locateLink(Link pa,Link e);
void destroyLink(Link L);
int compareNum(int i);
void destroyLink(Link L)
{
Link p;
p=L-next;
while(p)
{
L-next=p-next;
delete p;
p=L-next;
}
delete L;
L=NULL;
}
void createLink(Link L,int n)
{
if(L!=NULL){destroyLink(L);}
Link p,newp;
//int k=0;
L=new LNode;
L-next=NULL;
(L-data).expn=-1;//创建头结点
p=L;
for(int i=1;i=n;i++)
{
newp=new LNode;
cout请输入第i项的系数和指数:endl;
cout系数:;
cin(newp-data).coef;
cout指数:;
cin(newp-data).expn;
if(newp-data.expn0){cout您输入有误,指数不允许为负值!endl;delete newp;i--;continue;}
newp-next=NUL
您可能关注的文档
- 养老地产案例-台湾长庚养生文化村.ppt
- 养老公寓开发案例研究.doc
- 养老养生地产模式经典研究.doc
- 养老院项目投资商业计划书.doc
- 养老院养老公寓制度 养老护理员培训.doc
- 养老政策汇编_养老院养老公寓投资分析报告.doc
- 养男育女调不同.doc
- 养生与保健 PPT课件.ppt
- 养殖业项目可行性研究报告.doc
- 氧化风机检修作业指导书.doc
- 2024年云南玉溪市儿童医院提前招考聘用工作人员【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省昆明市五华区交通运输局征地拆迁专项人员招聘2人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省文山富宁县殡仪馆招聘业务员及刻字员16人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省文山州住房公积金管理中心招聘42人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省临沧镇康县融媒体中心招聘记者5人【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省普洱市“高校毕业生就业创业行动”党政储备人才专项招引【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省元谋县林业和草原局招聘临时人员10人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省丽江市高质量发展精准引才103人(市级事业单位)历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省昆明空港经济区(大板桥街道)招聘凌翔社区工作人员历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年云南省昆明市食品药品检验所招聘5人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
最近下载
- 救护队预防性检查.ppt
- 新型轻钢装配式复合墙板.pdf VIP
- 2023-2024学年陕西省西安市雁塔区数学三年级第一学期期末考试试题含答案.doc
- 酚醛树脂1.ppt
- 2022-2023年度武汉规划展示馆与两型社会展示馆定稿.pdf VIP
- 煤矿地质学培训教材.pdf
- BS ISO 4864-2023 Ships and marine technology. Jacking system appliances on self-elevating 船舶和船舶技术. 自升式顶升系统设备.pdf
- 【提分专项】闽教版英语小升初总复习-语法部分(B卷有答案).docx VIP
- 空压机工作原理及技术方案.docx
- 人教版(2023版)初中历史八年级上册全册同步练习+单元及期中期末测试合集(含答案)【可编辑可打印】.docx
文档评论(0)