要求:
一元稀疏多项式计算器
【问题描述】 设计一个一元稀疏多项式简单计算器。
【基本要求】一元稀疏多项式简单计算器的基本功能是:
(1) 输入并建立多项式 ;
(2) 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,ci,ei,其中n是多项式的项数,ci 和ei,分别是第 i 项的系数和指数,序列按指数降序排列;
(3) 多项式a和b相加,建立多项式a +b;
(4) 多项式a和b相减,建立多项式a -b 。
【测试数据】
1)(2x+5x8-3.1x11) + (7-5x8+11x9)=(-3.1x11+11x9+2x+7)
2)(6x-3-x+4.4x2-1.2x9) -(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x)
3)(1 +x + x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)
4)(x+x3)+(-x-x3)=0
5)(x+x100)+(x100 +x200)=(x+2x100+x200)
6)(x+x2+x3)+0=x+x2+x3
7) 互换上述测试数据中的前后两个多项式
【实现提示】 用带表头结点的单链表存储多项式。
【选作内容】
1) 计算多项式在x处的值。
2) 求多项式 a 的导函数 。
3) 多项式a和b相乘,建立乘积多项式ab 。
4) 多项式的输出形式为类数学表达式。例如 ,多项式 -3x8+6x3-18 的输出形式为-3x8+6x3-18,x15+(-8)x7-14的输出形式为s15+(-8)x7-14。注意,数值为1的非零次项的输出形式中略去系数1,如项1x8的输出形式为x8,项 -1x3的输出形式为-x3。
**
实现:
Main类
package usps;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
Polynomial poly = new Polynomial();
int num;
do
{
//菜单
System.out.println("\n 一元稀疏多项式计算器");
System.out.println("——————————————————————————————————————————————————————————");
System.out.println( "1.建立多项式a 2.建立多项式a+b 3.建立多项式a-b " +
"\n4.建立多项式axb 5.多项式a的导函数 6.多项式在x处的值\n7.退出");
System.out.println("——————————————————————————————————————————————————————————");
System.out.print("命令: ");
num=in.nextInt();
switch (num)//命令
{
case 1://建立多项式
{
System.out.println("请输入多项式:");
System.out.println("项的个数n <系数 指数>*n");
LinkList list = poly.inPoly();
System.out.print("\n多项式: ");
list.allPut();
}break;
case 2://多项式 a + b
{
System.out.println("请输入多项式a:");
System.out.println("项的个数n <系数 指数>*n");
LinkList listA = poly.inPoly();
System.out.println("请输入多项式b:");
LinkList listB = poly.inPoly();
System.out.print("\n多项式 a : ");
listA.allPut();
System.out.print("\n多项式 b : ");
listB.allPut();
System.out.print("\n多项式 a+b : ");
poly.addPoly(listA,listB).allPut();
}break;
case 3://多项式 a - b
{
System.out.println("请输入多项式a:");
System.out.println("项的个数n <系数 指数>*n");
LinkList listA = poly.inPoly();
System.out.println("请输入多项式b:");
LinkList listB = poly.inPoly();
System.out.print("\n多项式 a : ");
listA.allPut();
System.out.print("\n多项式 b : ");
listB.allPut();
System.out.print("\n多项式 a-b : ");
poly.minusPoly(listA,listB).allPut();
}break;
case 4://建立多项式axb
{
System.out.println("请输入多项式a:");
System.out.println("项的个数n <系数 指数>*n");
LinkList listA = poly.inPoly();
System.out.println("请输入多项式b:");