用C++数据结构编程:数据结构一元多项式的表示和相加加

Polynomial 本程序采用c/c++实现一元多项式的加法、 和乘法运算,利用数据结构中的顺序存储方 Data structs
247万源代码下载-
&文件名称: Polynomial& & [
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 3621 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:本程序采用c/c++实现一元多项式的加法、减法和乘法运算,利用数据结构中的顺序存储方式和链式存储方式实现,程序在vs2013中编译通过,本压缩包是vs2013的项目文件,包含编译成功的可执行文件exe和源代码。-This program uses c/c++ to realize the addition, subtraction and multiplication of the data structure, the use of data structure in the order of storage and chain store mode, the program compiled in vs2013 through, the compression package is the vs2013 project file, including the compilation of the success of the EXE and source code.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&Polynomial&&..........\Debug&&..........\.....\Polynomial.exe&&..........\.....\Polynomial.ilk&&..........\.....\Polynomial.pdb&&..........\Polynomial&&..........\Polynomial.exe&&..........\Polynomial.sdf&&..........\Polynomial.sln&&..........\Polynomial.v12.suo&&..........\..........\Debug&&..........\..........\.....\Polynomial.Build.CppClean.log&&..........\..........\.....\Polynomial.log&&..........\..........\.....\Polynomial.obj&&..........\..........\.....\Polynomial.tlog&&..........\..........\.....\...............\CL.read.1.tlog&&..........\..........\.....\...............\CL.write.1.tlog&&..........\..........\.....\...............\link.read.1.tlog&&..........\..........\.....\...............\link.write.1.tlog&&..........\..........\.....\...............\Polynomial.lastbuildstate&&..........\..........\.....\vc120.idb&&..........\..........\.....\vc120.pdb&&..........\..........\Polynomial.cpp&&..........\..........\Polynomial.vcxproj&&..........\..........\Polynomial.vcxproj.filters&&..........\..........\Release&&..........\..........\.......\Polynomial.log&&..........\..........\.......\Polynomial.obj&&..........\..........\.......\Polynomial.sbr&&..........\..........\.......\Polynomial.tlog&&..........\..........\.......\...............\bscmake.read.1.tlog&&..........\..........\.......\...............\BscMake.write.1.tlog&&..........\..........\.......\...............\cl.read.1.tlog&&..........\..........\.......\...............\cl.write.1.tlog&&..........\..........\.......\...............\link.read.1.tlog&&..........\..........\.......\...............\link.write.1.tlog&&..........\..........\.......\...............\Polynomial.lastbuildstate&&..........\..........\.......\Polynomial.vcxprojResolveAssemblyReference.cache&&..........\..........\.......\vc120.pdb&&..........\Release&&..........\.......\Polynomial.bsc&&..........\.......\Polynomial.exe&&..........\.......\Polynomial.pdb
&输入关键字,在本站247万海量源码库中尽情搜索:求一个c++数据结构一元多项式的表示及相加的代码,要包括删除和插入_百度知道  n-&next=j-&
  j-&next=n;
  else p=p-&
  if(p==NULL&&q!=NULL)
  p=L1-&
  while(p!=NULL&&p-&next!=NULL)
  cout《p-&xi《"x^"《p-&ci《"+";
  if(p!=NULL&&p-&next==NULL)
  cout《p-&xi《"x^"《p-&ci《
  system("pause");
  return 0;
【】【】【】【】
ISBN编号:&8
出版时间:&2013-3
出版社:&中国人事出版社
定价:¥45 优惠价:¥45&&ISBN编号:&9
出版时间:&2013-4
出版社:&中国人事出版社
定价:¥45 优惠价:¥45&&
????????????
????????????
         Copyright ©
() All Rights Reserved数据结构(20)
符号多项式处理,是表处理的典型范例。而这章就是主要就本经典案例进行讨论。
一元多项式介绍
数学上,一个一元多项式pn(x)可以按照升幂写成pn(x)=p0+p1x+p2x2+...+pnxn
它由n+1个系数唯一确定。因此在计算机里面,它可以由一个线性表P来表示:
P=(p0,p1,p2,...,pn)
每一项的指数i隐含在其系数pi的序号里。
假设Qm(x)是一元m次多项式,同样可用线性表Q来表示:
Q=(q0,q1,q2,...,qm)
为了不失去一般性,我们假设m&n,则两个多项式相加的结果Rnx=Pn(x)+Qmx 可用线性表R来表示:R=(p0+q0,p1+q1,p2+q2,...,pm+qm,pm+1,...,pn)
显然,我们可以对P、Q和R采用顺序存储机构,使得多项式相加的算法定义十分简洁。至此,一元多项式的表示及相加问题似乎已经解决了。然而,在通常的应用中,多项式的次数可能很高而且变化很大,使得顺序存储结构的最大长度难以确定。特别是在处理式子的次数很高变化很大,使得顺序存储结构的最大长度很难确定。特别是形如S(x)=1+3x10000+2x20000
的多项式时,就要用一长度为20001的线性表来表示,表中却只有3个非0元素,这种对内存空间的浪费是应当要避免的,但是如果只存储非零系数则显然必须同时存储相应的指数。
一般情况下,一元n次多项式可以写成:pn(x)=p1xe1+p2xe2+p3xe3+...+pmxem
pi是指数为ei的项的非零系数,且满足
0≤e1&e2&...&em=n
若是用一个长度为m且每个元素有两个数据项(系数项和指数项)的线性表
((p1,e1),(p2,e2),...,,(pm,em))
便可唯一确定多项式Pn(x)。
最坏情况下,n+1(=m)个系数都不为零,则比只存储每项系数的方案要多一倍的数据。但是对于前面涉及到的S(x)类的多项式(式子的次数很高变化很大),将大大节省空间。
若只对多项式进行“求值”等不改变多项式系数和指数的运算,采用类似顺序表的顺序存储结构。否则,用链表结构。
抽象数据类型一元多项式定义
ADT Polynomial{
数据对象:D={ ai | ai∈TermSet, i=1,2,...,m,
TermSet中的每个元素包含一个表示系数的实数和表示指数的整数}
数据关系:R1={ &ai-1, ai&|ai-1, ai∈D, 且ai-1中的指数值&ai中的指数值,i=2,……,n}
基本操作:
CreatPolyn(&P,m)
操作结果:输入m项的系数和指数,建立一元多项式P。
DestroyPolyn(&P)
初始条件:一元多项式P已存在。
操作结果:销毁一元多项式P。
PrintPolyn(P)
初始条件:一元多项式P已存在。
操作结果:打印输出一元多项式P。
PolynLength(P)
初始条件:一元多项式P已存在。
操作结果:返回一元多项式P中的项数。
AddPolyn(&Pa,&Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成多项式相加运算,即:Pa=Pa+Pb,并销毁一元多项式Pb。
SubtractPolyn(&Pa,&Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成多项式相减运算,即:Pa=Pa-Pb,并销毁一元多项式Pb。
MultiplyPolyn(&Pa,&Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成多项式相乘运算,即:Pa=Pa×Pb,并销毁一元多项式Pb。
}ADT Polynomial
实现此定义,需要采用链式存储结构
相加如何实现?
一元多项式相加原则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式“中的一项,对于两个一元多项式中所有指数不相同的项,则分别复抄写到”和多项式“中去。
按照Polynomial定义,”和多项式“链表中的结点无需另外生成,而应从两个多项式的链表中摘取。
假设指针qa和qb分别指向多项式A和多项式B中当前进行比较的某个结点,则想比较两个结点中的指数值。存在下列的三种情况:
下一文章将会给出如何实现一元多项式相加,此节则给大家建立一元多项式相加的想法。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31071次
积分:1237
积分:1237
排名:千里之外
原创:82篇
评论:18条
(14)(1)(4)(1)(11)(21)(5)(5)(1)(4)(3)(1)(8)(5)}

我要回帖

更多关于 数据结构一元多项式的表示和相加 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信