java多项式求和代码 java多项式加法

用java单链表实现一元多项式相加的算法?

public class Test {

淮上网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

public static void main(String[] args) {

try{

LinkList list1 = new LinkList();

LinkList list2 = new LinkList();

LinkList list3 = null;

list1.addAt(0, new Item(1, 5));

list1.addAt(1, new Item(-1.5, 3));

list1.addAt(2, new Item(1, 1));

list2.addAt(0, new Item(0.5, 5));

list2.addAt(1, new Item(0.5, 4));

list2.addAt(2, new Item(1.5, 3));

list2.addAt(3, new Item(3, 0));

list3 = mergeLinkList(list1, list2);

System.out.println("一元多项式的相加过程:");

list1.listAll();

System.out.println(" + ");

list2.listAll();

System.out.println(" = ");

list3.listAll();

}

catch(Exception e){

e.printStackTrace();

}

}

/**

* 一元多项式的一般项类

*/

class Item{

private double coef;  //一元多项式的一般项的系数

private int exp;   //一元多项式的一般项的指数

public Item(){

this.coef = 0.0;

this.exp = 0;

}

public Item(double coef, int exp){

this.coef = coef;

this.exp = exp;

}

public double getCoef(){

return this.coef;

}

public void setCoef(double coef){

this.coef = coef;

}

public int getExp(){

return this.exp;

}

public void setExp(int exp){

this.exp = exp;

}

}

/**

* 链表结点类

*/

class Node{

private Item data;

private Node next;   //链表结点的指针域,指向直接后继结点

public Node(){

data = null;

next = null;

}

public Node(Item data, Node next){

this.data = data;

this.next = next;

}

public Item getData(){

return this.data;

}

public void setData(Item data){

this.data = data;

}

public Node getNext(){

return this.next;

}

public void setNext(Node next){

this.next = next;

}

}

/**

* 链表类

*/

class LinkList{

private Node head = null; //头结点指针

private int size = 0;

public LinkList(){

head = new Node();

size = 0;

}

//在i位置插入元素elem

public boolean addAt(int i, Item elem) {

if(i 0 || i size){

return false;

}

Node pre,curr;

int pos;

for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());

curr = new Node(elem, pre.getNext());

pre.setNext(curr);

size++;

return true;

}

//删除i位置的元素

public boolean removeAt(int i) {

if(i 0 || i = size){

return false;

}

Node pre,curr;

for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());

curr = pre.getNext();

pre.setNext(curr.getNext());

size--;

return true;

}

java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

用java单链表实现一元多项式相加的算法。()

public class Test {

public static void main(String[] args) {

try{

LinkList list1 = new LinkList();

LinkList list2 = new LinkList();

LinkList list3 = null;

list1.addAt(0, new Item(1, 5));

list1.addAt(1, new Item(-1.5, 3));

list1.addAt(2, new Item(1, 1));

list2.addAt(0, new Item(0.5, 5));

list2.addAt(1, new Item(0.5, 4));

list2.addAt(2, new Item(1.5, 3));

list2.addAt(3, new Item(3, 0));

list3 = mergeLinkList(list1, list2);

System.out.println("一元多项式的相加过程:");

list1.listAll();

System.out.println(" + ");

list2.listAll();

System.out.println(" = ");

list3.listAll();

}

catch(Exception e){

e.printStackTrace();

}

}

//两个一元多项式相加,返回新的一元多项式

public static LinkList mergeLinkList(LinkList list1, LinkList list2){

int i = 0;

Item item = new Item();

Node curr1, curr2;

LinkList list3 = new LinkList();

curr1 = list1.getHead().getNext();

curr2 = list2.getHead().getNext();

while(curr1 != null curr2 != null){

if(curr1.getData().getExp() curr2.getData().getExp()){

item = curr1.getData();

list3.addAt(i, item);

curr1 = curr1.getNext();

i++;

}

else if(curr1.getData().getExp() curr2.getData().getExp()){

item = curr2.getData();

list3.addAt(i, item);

curr2 = curr2.getNext();

i++;

}

else{

item = new Item(curr1.getData().getCoef() + curr2.getData().getCoef(), curr1.getData().getExp());

if(item.getCoef() != 0){

list3.addAt(i, item);

i++;

}

curr1 = curr1.getNext();

curr2 = curr2.getNext();

}

}

while(curr1 != null){

item = curr1.getData();

list3.addAt(i++, item);

curr1 = curr1.getNext();

}

while(curr2 != null){

item = curr2.getData();

list3.addAt(i++, item);

curr2 = curr2.getNext();

}

return list3;

}

}

/**

* 一元多项式的一般项类

*/

class Item{

private double coef; //一元多项式的一般项的系数

private int exp; //一元多项式的一般项的指数

public Item(){

this.coef = 0.0;

this.exp = 0;

}

public Item(double coef, int exp){

this.coef = coef;

this.exp = exp;

}

public double getCoef(){

return this.coef;

}

public void setCoef(double coef){

this.coef = coef;

}

public int getExp(){

return this.exp;

}

public void setExp(int exp){

this.exp = exp;

}

}

/**

* 链表结点类

*/

class Node{

private Item data;

private Node next; //链表结点的指针域,指向直接后继结点

public Node(){

data = null;

next = null;

}

public Node(Item data, Node next){

this.data = data;

this.next = next;

}

public Item getData(){

return this.data;

}

public void setData(Item data){

this.data = data;

}

public Node getNext(){

return this.next;

}

public void setNext(Node next){

this.next = next;

}

}

/**

* 链表类

*/

class LinkList{

private Node head = null; //头结点指针

private int size = 0;

public LinkList(){

head = new Node();

size = 0;

}

//在i位置插入元素elem

public boolean addAt(int i, Item elem) {

if(i 0 || i size){

return false;

}

Node pre,curr;

int pos;

for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());

curr = new Node(elem, pre.getNext());

pre.setNext(curr);

size++;

return true;

}

//删除i位置的元素

public boolean removeAt(int i) {

if(i 0 || i = size){

return false;

}

Node pre,curr;

for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());

curr = pre.getNext();

pre.setNext(curr.getNext());

size--;

return true;

}

//根据值value查询结点是否存在,若存在返回位置,否则返回-1

public int findByValue(Item value){

Node curr;

int pos;

for(pos=0,curr=head.getNext(); curr!=null; pos++,curr=curr.getNext()){

if(curr.getData().toString().equals(value.toString())){

break;

}

}

if(curr==null){

return -1;

}

return pos;

}

public Node getHead(){

return this.head;

}

public void setHead(Node head){

this.head = head;

}

public int getSize(){

return this.size;

}

public boolean isEmpty(){

return (size==0);

}

public void listAll(){

for(Node curr=head.getNext(); curr!=null; curr=curr.getNext()){

System.out.print("(" + curr.getData().getCoef() + ", " + curr.getData().getExp() + ")\t");

}

System.out.println();

}

}

用java编程计算1+2+3+…+n的和! 偶是小白!希望编代码时讲解越详细越好

两种方法,一种直接用循环计算,用循环依次对1到n进行叠加,具体如下:

public class Exos

{

public static void main(String[] args){

int n = 10;

int sum = 0;

for(int i=0;in;i++){

sum = sum + i+1;

}

System.out.println("The sum is: " + sum);

}

}

另一种方式是直接采用求和公式(前n项和求和公式为:(首项+末项)*项数/2):

public class Exos

{

public static void main(String[] args){

int n = 10;

int sum = n*(n+1)/2;

System.out.println("The sum is: " + sum);

}

}

如果还有不清楚的地方,欢迎追问。


新闻名称:java多项式求和代码 java多项式加法
网页地址:http://scyanting.com/article/dddjpjs.html