早教吧作业答案频道 -->其他-->
Java数据结构编程题目一条单链表可以表示一个一元多项式,每个结点包括三个域:指数域、系数域和后继结点链。表示多项式3x(4次方)-6x(2次方)+5x-10的单链表。给定两个多项式,实现两个多
题目详情
Java数据结构编程题目
一条单链表可以表示一个一元多项式,每个结点包括三个域:指数域、系数域和后继结点链。表示多项式3x(4次方)-6x(2次方)+5x-10的单链表。给定两个多项式,实现两个多项式相加算法。(最好有详细解析,如果解析的好会再加分)
一条单链表可以表示一个一元多项式,每个结点包括三个域:指数域、系数域和后继结点链。表示多项式3x(4次方)-6x(2次方)+5x-10的单链表。给定两个多项式,实现两个多项式相加算法。(最好有详细解析,如果解析的好会再加分)
▼优质解答
答案和解析
自己参考下吧,希望对你有用!
//用单链表来实现多项式的加法,代码如下
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) {
// 提示:如果指数相同,则相加
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(int c, int i) {
append(new Monomial(c, i));
}
public String toString() {//toString()方法就是把对象转换成String类型
//比如一个Integer对象的toString方法就是把这个对象表示的整数转化成字符串,133就成了"133"。
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); // 提示:注意这里
current = current.next;
}
current = p2.first;
while (current != null) {
result.append(current.coefficient, current.index);
current = current.next;
}
return result;
}
public static void main(String[] args) {
//构造多项式p1的每一项
Polynomial p1 = new Polynomial();
p1.append(3, 4);
p1.append(-6, 2);
p1.append(5, 1);
p1.append(-10, 0);
System.out.println("p1: " + p1);
//构造多项式p2的每一项
Polynomial p2 = new Polynomial();
p2.append(2, 5);
p2.append(-6, 2);
p2.append(5, 1);
System.out.println("p2: " + p2);
Polynomial result = p1.add(p2);
System.out.println("p1+p2= " + result);
}
}
/**
* 这是一个内部类
* 单项式的表示
*/
class Monomial {
int coefficient; // 系数
int index; // 指数
Monomial next; // 后继结点
public Monomial() {
}
public Monomial(int c, int i) {
this.coefficient = c;
this.index = i;
}
}
//用单链表来实现多项式的加法,代码如下
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) {
// 提示:如果指数相同,则相加
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(int c, int i) {
append(new Monomial(c, i));
}
public String toString() {//toString()方法就是把对象转换成String类型
//比如一个Integer对象的toString方法就是把这个对象表示的整数转化成字符串,133就成了"133"。
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); // 提示:注意这里
current = current.next;
}
current = p2.first;
while (current != null) {
result.append(current.coefficient, current.index);
current = current.next;
}
return result;
}
public static void main(String[] args) {
//构造多项式p1的每一项
Polynomial p1 = new Polynomial();
p1.append(3, 4);
p1.append(-6, 2);
p1.append(5, 1);
p1.append(-10, 0);
System.out.println("p1: " + p1);
//构造多项式p2的每一项
Polynomial p2 = new Polynomial();
p2.append(2, 5);
p2.append(-6, 2);
p2.append(5, 1);
System.out.println("p2: " + p2);
Polynomial result = p1.add(p2);
System.out.println("p1+p2= " + result);
}
}
/**
* 这是一个内部类
* 单项式的表示
*/
class Monomial {
int coefficient; // 系数
int index; // 指数
Monomial next; // 后继结点
public Monomial() {
}
public Monomial(int c, int i) {
this.coefficient = c;
this.index = i;
}
}
看了 Java数据结构编程题目一条...的网友还看了以下:
3\4乘以5和5乘以3\4的意义一样吗在回答"5乘以3\4表示什么"时,除了表示求5的3\4是多少 2020-04-09 …
某人在一次选举中,需要3/4的选票才能当选,计算2/3的选票后,他得到的选票达到当选票数的5/6, 2020-06-27 …
已知A是一个3×4矩阵,下列命题中正确的是()A.若矩阵A中所有3阶子式都为0,则秩(A)=2B. 2020-06-30 …
列式计算(1-2题列综合算式,3-4题列方程)(1)用1.25与0.8的积除1.4与215的差,得 2020-07-19 …
(X+5)(X+2)=54化为一元二次方程的一般形式.x(x+1)+x(x+2)+(x+1)(x+ 2020-07-19 …
第一个算式:1+2第二个算式:3+4+5第三个算式:6+7+8+9求第100个结果是多少? 2020-07-20 …
(1)二级等差数列:2,3,5,8,()A.8B.9C.15D.12(2)等差数列变式:3,4,6 2020-07-23 …
数学课上老师与同学们一起利用球体的体积公式V=3/4πr计算出地球的体积约是9.05x10的11次方 2020-11-15 …
有13个卡片,分别写上1,2,3,4这4个字,并且要求最少要有1个1,个2.,3个3,4个4,问一共 2020-11-24 …
看图填空.加法算式:相同加数是,有个相同加数.乘法算式:3×4=,读作:乘等于.表示个连加.说出一个 2020-12-21 …