一元多项式 java_java链表实现一元多项式的合并同类项以及加法
上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项
链表节点类:
package PloyItem;
public class Lnode implements Comparable{
public float coef;
public int exp;
public Lnode next;
public Lnode (float coef,int exp){
this.exp=exp;
this.coef=coef;
next=null;
}
public Lnode(float coef,int exp,Lnode next){
this.exp=exp;
this.coef=coef;
this.next=next;
}
public boolean equals(Object e){
Lnode node=(Lnode)e;
return (exp==node.exp);
}
@Override
public int compareTo(Lnode o) {
// TODO Auto-generated method stub
return 0;
}
}
多项式类:
package PloyItem;
import java.util.Iterator;
import org.junit.Test;
import seqList.AbList;
public class PloyItemList {
private int length;
Lnode first;
public PloyItemList(int length)
{
first=null;
this.length=length;
}
public PloyItemList(){
first=null;
length=0;
}
public int size()//获取链表的长度
{
Lnode p=first;
int count=0;
while(p!=null){
count++;
p=p.next;
}
return count;
}
public boolean add(float coef,int exp)//向链表当中添加元素的方法
{
Lnode p=first,s;
s=new Lnode(coef,exp,null);
if(first==null){
first=s;
s.next=null;
return true;
}
else {
while(p.next!=null){
p=p.next;
}
p.next=s;
s.next=null;
return true;
}
}
public boolean add(float coef)//想链表当中添加元素的方法
{
Lnode p=first,s;
s=new Lnode(coef,0,null);
if(first==null){
first=s;
s.next=null;
return true;
}
else {
while(p.next!=null){
p=p.next;
}
p.next=s;
s.next=null;
return true;
}
}
public void sort(){//对多项式进行降序排列的方法
Lnode p,q;int i,j,m;float n;
for( i=0,p=first;i
for(j=i+1,q=p.next;j
if(p.exp
{
m=p.exp;p.exp=q.exp;q.exp=m;
n=p.coef;p.coef=q.coef;q.coef=n;
}
}
public void union()//对多项式进行合并同类项的方法
{
Lnode p,q,r;
sort();
p=first;
q=p.next;
while(p!=null&& q!=null){
if(p.exp==q.exp)
{r=q;
p.coef=p.coef+q.coef;
remove(q.coef,q.exp);
p=r;
q=r.next;
}
else {
p=q;
q=q.next;
}
}
}
public void remove (float coef,int exp)//删除链表当中的某一个节点的方法
{
Lnode p=first,q=p;
for(q=p;q!=null;q=q.next)
if(q.next.coef==coef && q.next.exp==exp)
break;
q.next=q.next.next;
}
public String toString()//将链表转化为一个字符串输出的方法
{
String s="p(x)=";
Lnode p=first;
sort();
union();
while(p!=null){
if(p.coef==0)
s=s+"+";
else if(p.exp==0)
s=s+p.coef+"+";
else if(p.exp==1)
s=s+p.coef+"x"+"+";
else
s=s+p.coef+"x^"+p.exp+"+";
p=p.next;
}
return s.substring(0, s.length()-1)+"\n";
}
public void addPloyItem(PloyItemList p2)//多项式想家的而方法
{
this.sort();p2.sort();
Lnode p=this.first,q=p2.first;
while(p!=null || q!=null)
{
if(p!=null && q!=null)
{
if(p.exp==q.exp){
p.coef+=q.coef;
p=p.next;q=q.next;
}
else if(p.exp
this.add(q.coef, q.exp);
q=q.next;
}
else {
this.add(q.coef, q.exp);
q=q.next;
}
}
else if(p==null && q!=null)
this.add(q.coef, q.exp);
else if(p!=null && q==null)
p=p.next;
}
}
}
测试类:
package PloyItem;
/**
* 用线性表实现一元多项式的加法运算以及多项式的输出
* @author asus
*
*/
pub
95b1
lic class PolyItemDemo {
public static void main(String[] args) {
PloyItemList p1=new PloyItemList(4);
p1.add(3, 3);p1.add(2, 2);p1.add(1, 1);p1.add(1);
System.out.println("第一个多项式(合并同类项):"+p1);
p1.add(4, 4);
p1.add(15);
p1.add(3, 2);
System.out.println(p1);
System.out.println("多项式的项数为(合并同类项):"+p1.size());
PloyItemList p2=new PloyItemList();
p2.add(6,4);p2.add(4,4);p2.add(3,2);p2.add(1,0);
System.out.println(p2);
p2.add(19);
System.out.println(p2);
System.out.println("多项式的项数为:"+p2.size());
System.out.println("多项式的相加:");
p1.addPloyItem(p2);
System.out.println("相加的结果为:"+p1);
}
}
测试的结果:
标签:
一元多项式 java_java链表实现一元多项式的合并同类项以及加法相关推荐
- java链表实现一元多项式的合并同类项以及加法
上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项 链表节点类: package PloyItem;public class Lnode implemen ...
- 基于c数据结构——实现多项式合并同类项,加法和乘法
#include<stdio.h> #include<malloc.h> //定义结点的结构体 typedef struct { float x;//系数 int z;//指数 ...
- java 单链表一元多项式_java单链表实现一元多项式加法和乘法运算
设有一个一元多项式 f(x)=∑aixi ,我们要用一个单链表将它表示出来,并实现它的加和乘运算.多项式的每一项放在一个结点中,每个结点中放两个信息,即每一项的系数和幂.在这里我们用有头结点的链表 ...
- 单链表存储一元多项式[IMUT 数据结构实验]
题目 [问题描述] 利用单链表存储一元多项式. [基本要求] 实现以下基本操作: (1)从键盘输入一元多项式的信息,建立一元多项式. (2)实现两个一元多项式相加,并输出和多项式. 分析 题目说是用单 ...
- C语言链表怎么合并同类项,急!!!!c语言:求n次多项式的加法和乘法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 if(s->data.coef!=0.0) { s->data.expn=p->data.expn; r->next=s; r=s ...
- 数据结构之链表创建一元多项式,求一元多项式之和
数据结构之链表创建一元多项式,求一元多项式之和 前言 对于一元多项式,我们完全可以利用线性表P(a0,a1,a2,-,an)表示,这样的线性表在求两个多项式相加等操作时确实简单,但是多于如下的多项式: ...
- 单链表一元多项式求和java_计算一元多项式的相加
一元多项式的表达和相加 使用单链表表示一元多项式,由于使用java语言自己编写实现,没有使用LinkedList集合实现.所以需要创建单链表的类,类中包含指数,系数和后继元素的地址.类的设计如下: ...
- 多项式合并同类项c语言链表,链表透过文件读写计算两个多项式之积
当前位置:我的异常网» C语言 » 链表透过文件读写计算两个多项式之积 链表透过文件读写计算两个多项式之积 www.myexceptions.net 网友分享于:2014-03-24 浏览:10次 ...
- C语言链表怎么合并同类项,求一个关于合并同类项的编程
求一个关于合并同类项的编程 全并同类项的程序,谢谢 搜索更多相关的解决方案: 同类项 ----------------解决方案------------------------------------- ...
最新文章
- 如何修改计算机网络时间,在Win7系统中,电脑时间改不了怎么办?
- guava中的Joiner
- -jar参数运行应用时classpath的设置方法
- Roguelike游戏的视野算法
- ARMA模型的性质之方法性工具
- CVPR | BASNet:边缘感知的显著性物体检测
- 3、Docker 基础安装和基础使用 二
- 问题 I: Sequence Problem : Array Practice
- chrome浏览器 提示Adobe Flash Player未安装的解决方法
- c++重复代码检查工具
- win10桌面显示计算机及网上邻居,Win10网上邻居在哪里Win10桌面显示网络图标的方法...
- VB6下的BitMap示例:模拟雨点程序
- php dt dd,DL.DT.DD实现左右的布局简单例子
- 世界杯ing~这不来个实时数据可视化?(结尾附源码)
- dw html 浮动窗口,Dreamweaver怎样实现飘浮光球特效
- 红外论文:在不同场景下的距离对红外测温的影响
- 涉密计算机不得接入互联网等公共信息网络,在涉密场所使用的与国际互联网或者其他公共网络连接的计算机不得安装视频、音频等输入装置 - 作业在线问答...
- 基于微信小程序和安卓的课程考勤点名系统APP
- 【STC单片机学习】第十一课:蜂鸣器
- VR购物Buy+是否会让线下实体店渐渐消亡?