您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> JAVA >> 辅导 >> 正文    
  Java用单链表实现多项式加减乘 【注册男护士专用博客】          

Java用单链表实现多项式加减乘

www.nanhushi.com     佚名   不详 

  用单链表来实现多项式的加减乘,除就不做了,代码如下
  public class Polynomial {
  private Monomial first; // 首项
  //添加单项式
  public void append(Monomial monomial) {
  if (monomial == null) {
  // do nothing
  } else if (first == null) {
  first = monomial;
  } else {
  Monomial current = first;
  while (current != null) {
  // Examda提示:如果指数相同,则相加
  if (current.index == monomial.index) {
  current.coefficient += monomial.coefficient;
  break;
  } else if (current.next == null) { // 否则直接扔到最后
  current.next = monomial;
  break;
  }
  current = current.next;
  }
  }
  }
  public void append(double c, int i) {
  append(new Monomial(c, i));
  }
  public String toString() {
  StringBuffer sb = new StringBuffer();
  Monomial current = first;
  while (current.next != null) {
  sb
  .append("(" + current.coefficient + "x^" + current.index
  + ") + ");
  current = current.next;
  }
  sb.append("(" + current.coefficient + "x^" + current.index + ")");
  return sb.toString();
  }
  // 两个多项式相加
  public Polynomial add(Polynomial p2) {
  Polynomial result = new Polynomial();
  Monomial current = this.first;
  while (current != null) {
  result.append(current.coefficient, current.index); // Examda提示:注意这里
  current = current.next;
  }
  current = p2.first;
  while (current != null) {
  result.append(current.coefficient, current.index);
  current = current.next;
  }
  return result;
  }
  // 两个多项式相减 this- p2
  public Polynomial substract(Polynomial p2) {
  Polynomial result = new Polynomial();
  Monomial current = this.first;
  while (current != null) {
  result.append(current.coefficient, current.index); // 注意这里
  current = current.next;
  }
  current = p2.first;
  while (current != null) {
  result.append(-current.coefficient, current.index);
  current = current.next;
  }
  return result;
  }
  /**
  * this * p2
  *
  * @return
  */
  public Polynomial multiply(Polynomial p2) {
  Polynomial result = new Polynomial();
  Monomial c1 = this.first;
  Monomial c2 = p2.first;
  while (c1 != null) {
  while (c2 != null) {
  result.append(c1.coefficient * c2.coefficient, c1.index
  + c2.index);
  c2 = c2.next;
  }
  c1 = c1.next;
  c2 = p2.first;
  }
  return result;
  }
  public Polynomial divide(Polynomial p2) {
  // todo 实现相除
  return null;
  }
  public static void main(String[] args) {
  Polynomial p1 = new Polynomial();
  p1.append(2.2, 1);
  p1.append(3.3, 2);
  p1.append(4.111, 7);
  System.out.println("p1: " + p1);
  Polynomial p2 = new Polynomial();
  p2.append(2.232, 5);
  p2.append(3.444, 6);
  p2.append(5.777, 1);
  System.out.println("p2: " + p2);
  Polynomial result = p1.add(p2);
  System.out.println("加: " + result);
  result = p1.substract(p2);
  System.out.println("减: " + result);
  result = p1.multiply(p2);
  System.out.println("乘: " + result);
  }
  }
  /**
  * 单项式
  */
  class Monomial {
  double coefficient; // 系数
  int index; // 指数
  Monomial next; // 后继结点
  public Monomial() {
  }
  public Monomial(double c, int i) {
  this.coefficient = c;
  this.index = i;
  }
  } http://ks.examda.com

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。