上课的作业:利用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链表实现一元多项式的合并同类项以及加法相关推荐

  1. 一元多项式 java_java链表实现一元多项式的合并同类项以及加法

    上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项 链表节点类: package PloyItem; public class Lnode impleme ...

  2. 基于c数据结构——实现多项式合并同类项,加法和乘法

    #include<stdio.h> #include<malloc.h> //定义结点的结构体 typedef struct { float x;//系数 int z;//指数 ...

  3. java 单链表一元多项式_java单链表实现一元多项式加法和乘法运算

    设有一个一元多项式  f(x)=∑aixi  ,我们要用一个单链表将它表示出来,并实现它的加和乘运算.多项式的每一项放在一个结点中,每个结点中放两个信息,即每一项的系数和幂.在这里我们用有头结点的链表 ...

  4. 多项式合并同类项c语言链表,链表透过文件读写计算两个多项式之积

    当前位置:我的异常网» C语言 » 链表透过文件读写计算两个多项式之积 链表透过文件读写计算两个多项式之积 www.myexceptions.net  网友分享于:2014-03-24  浏览:10次 ...

  5. C语言链表怎么合并同类项,急!!!!c语言:求n次多项式的加法和乘法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 if(s->data.coef!=0.0) { s->data.expn=p->data.expn; r->next=s; r=s ...

  6. C语言链表怎么合并同类项,求一个关于合并同类项的编程

    求一个关于合并同类项的编程 全并同类项的程序,谢谢 搜索更多相关的解决方案: 同类项 ----------------解决方案------------------------------------- ...

  7. 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘并排序合并同类项.doc...

    #includetypedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Cre ...

  8. 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘,并排序,合并同类项.doc...

    #include typedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Cr ...

  9. 单链表存储一元多项式[IMUT 数据结构实验]

    题目 [问题描述] 利用单链表存储一元多项式. [基本要求] 实现以下基本操作: (1)从键盘输入一元多项式的信息,建立一元多项式. (2)实现两个一元多项式相加,并输出和多项式. 分析 题目说是用单 ...

最新文章

  1. Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
  2. jstack 脚本 自动日志_用jstack自动化捕抓异常java代码脚本
  3. 如何判断当前UI component是运行在IC还是non-IC环境下
  4. 在Orchard中使用Image Gallery模块
  5. java绘制半透明图片_如何使绘制的图像在Java中透明
  6. 微信小程序(12)--倒计时
  7. 一些知名科技公司的开源机器学习框架/平台
  8. 离散数学 第二类斯特林数 小白学习笔记
  9. python不同颜色散点图_Python+matplotlib绘制不同大小和颜色散点图实例
  10. java 第三方jar推荐_java 开发第三方Jar包
  11. 挑战杯创业计划书_基于云计算的下料优化软件_1. 执行总结
  12. 微信脚本配置服务器,微信自动加人脚本教程
  13. [人工智能-综述-9]:科学计算、大数据分析、人工智能、机器学习、深度学习全面比较
  14. flutter混编iOS常见问题
  15. Android性能优化之页面优化
  16. Unity 3D做2D坦克大战,控制图片切换朝向的2种方法。
  17. Excel按照固定行数拆分为多个文件
  18. HDMI上电信号分析
  19. 汇编指令MCR/MRC
  20. matplotlib.mlab库的重要函数

热门文章

  1. 智慧楼宇系统:商办楼宇运营方的不二之选
  2. 【方法】blob类型地址的图片下载
  3. 聚焦 Android 11: 大功告成
  4. 分治法解决循环赛事日程表(非常详细!)图文并茂-Java代码实现
  5. 基于Aidlux平台的智慧社区AI实战
  6. 优盘引导ghost恢复系统备份
  7. 戴在手上的智能录音笔,讯飞腕式智能录音笔R1超给力
  8. J-link下载出现Verification of RAMCode failed @ address 0x20000000问题的解决
  9. 《NoSQL入门》关于NoSQL
  10. 60句高逼格的文言文,不收藏绝对是你的损失!