java链表实现一元多项式的合并同类项以及加法
上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项
链表节点类:
package PloyItem;public class Lnode implements Comparable<Lnode>{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);}@Overridepublic int compareTo(Lnode o) {// TODO Auto-generated method stubreturn 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<this.size()-1;i++,p=p.next)for(j=i+1,q=p.next;j<this.size();j++,q=q.next)if(p.exp<q.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"+"+";elses=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<q.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**/
public 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 impleme ...
- 基于c数据结构——实现多项式合并同类项,加法和乘法
#include<stdio.h> #include<malloc.h> //定义结点的结构体 typedef struct { float x;//系数 int z;//指数 ...
- java 单链表一元多项式_java单链表实现一元多项式加法和乘法运算
设有一个一元多项式 f(x)=∑aixi ,我们要用一个单链表将它表示出来,并实现它的加和乘运算.多项式的每一项放在一个结点中,每个结点中放两个信息,即每一项的系数和幂.在这里我们用有头结点的链表 ...
- 多项式合并同类项c语言链表,链表透过文件读写计算两个多项式之积
当前位置:我的异常网» C语言 » 链表透过文件读写计算两个多项式之积 链表透过文件读写计算两个多项式之积 www.myexceptions.net 网友分享于:2014-03-24 浏览:10次 ...
- C语言链表怎么合并同类项,急!!!!c语言:求n次多项式的加法和乘法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 if(s->data.coef!=0.0) { s->data.expn=p->data.expn; r->next=s; r=s ...
- C语言链表怎么合并同类项,求一个关于合并同类项的编程
求一个关于合并同类项的编程 全并同类项的程序,谢谢 搜索更多相关的解决方案: 同类项 ----------------解决方案------------------------------------- ...
- 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘并排序合并同类项.doc...
#includetypedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Cre ...
- 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘,并排序,合并同类项.doc...
#include typedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Cr ...
- 单链表存储一元多项式[IMUT 数据结构实验]
题目 [问题描述] 利用单链表存储一元多项式. [基本要求] 实现以下基本操作: (1)从键盘输入一元多项式的信息,建立一元多项式. (2)实现两个一元多项式相加,并输出和多项式. 分析 题目说是用单 ...
最新文章
- Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
- jstack 脚本 自动日志_用jstack自动化捕抓异常java代码脚本
- 如何判断当前UI component是运行在IC还是non-IC环境下
- 在Orchard中使用Image Gallery模块
- java绘制半透明图片_如何使绘制的图像在Java中透明
- 微信小程序(12)--倒计时
- 一些知名科技公司的开源机器学习框架/平台
- 离散数学 第二类斯特林数 小白学习笔记
- python不同颜色散点图_Python+matplotlib绘制不同大小和颜色散点图实例
- java 第三方jar推荐_java 开发第三方Jar包
- 挑战杯创业计划书_基于云计算的下料优化软件_1. 执行总结
- 微信脚本配置服务器,微信自动加人脚本教程
- [人工智能-综述-9]:科学计算、大数据分析、人工智能、机器学习、深度学习全面比较
- flutter混编iOS常见问题
- Android性能优化之页面优化
- Unity 3D做2D坦克大战,控制图片切换朝向的2种方法。
- Excel按照固定行数拆分为多个文件
- HDMI上电信号分析
- 汇编指令MCR/MRC
- matplotlib.mlab库的重要函数