首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JAVA 用链表实现多项式加法解决方案

2012-02-06 
JAVA 用链表实现多项式加法请问哪位高手能给我完整的代码的,非常感谢。[解决办法]Java codeimport java.io.

JAVA 用链表实现多项式加法
请问哪位高手能给我完整的代码的,非常感谢。

[解决办法]

Java code
import java.io.*; //To implement I/O operationsclass link {    int coef, exp; // data part for the link list    link next; // next link in list    link(int a, int b) // constructor    {        coef = a; // initialize data        exp = b; // initialize data    }    void display() // To display the list    {        System.out.print(" " + coef + "xe" + exp);    }} // end of class linkclass linklist {    link p, q, d;    link first; // ref to first link on list    linklist() // constructor    {        first = null; // no links on list yet    }    void create(int a, int b) // To insert into the list    {        link node = new link(a, b); // make new link        node.next = first;        first = node;    } // End of function create    void padd(linklist A, linklist B) // To add the polynomials    {        int x; // Temporary variable for storing coef        p = A.first;        q = B.first;        d = first;        while ((p != null) && (q != null)) {            if (p.exp == q.exp) {                x = p.coef + q.coef;                if (x != 0) {                    link node = new link(x, p.exp);                    // make new link                    node.next = d;                    d = node;                }                p = p.next; // move to next node of 'A'                q = q.next; // move to next node of 'B'            } else if (p.exp > q.exp) {                link node = new link(p.coef, p.exp);                node.next = d;                d = node;                p = p.next;            } else {                link node = new link(q.coef, q.exp);                node.next = d;                d = node;                q = q.next;            }        }        while (p != null) {            link node = new link(p.coef, p.exp);            node.next = d;            d = node;            p = p.next;        }        while (q != null) {            link node = new link(q.coef, q.exp);            node.next = d;            d = node;            q = q.next;        }        first = d;    } // end of function padd    void disp() // To display the resultant polynomial    {        link current = first; // start at the beginning of the list        while (current != null) // until end of the list        {            current.display();            if (current.next != null) {                System.out.print("+");            } else {                System.out.print(" ");                // print data            }            current = current.next;            // move to next link        }        System.out.println(" ");    } // end of function disp} // end of class linklistpublic class Polyadd // The main class add{    public static void main(String args[])    // main function    {        try // to catch any exceptions        {            int r = 0, n, x, y;            System.out.println("/* POLYNOMIAL ADDITION */");            linklist A = new linklist(); // make new linklist 'A'            linklist B = new linklist(); // make new linklist 'B'            linklist C = new linklist(); // make new linklist 'C'            BufferedReader f = new BufferedReader(new InputStreamReader(                    System.in));            for (int j = 1; j <= 2; j++) {                // To insert the polynomials                System.out.println("Enter the " + j + " polynomial:");                System.out.println("Enter the no. of terms:");                n = Integer.parseInt(f.readLine());                for (int i = n; i > 0; i--) {                    System.out.println("Enter the coeff & exponent of " + i                            + " term");                    x = Integer.parseInt(f.readLine());                    y = Integer.parseInt(f.readLine());                    if (j == 1)                        A.create(x, y);                    // Assign values to links                    else                        B.create(x, y);                    // Assign values to links                }            }            System.out.println("FIRST POLYNOMIAL IS:");            A.disp(); // Display the first plynomial            System.out.println("SECOND POLYNOMIAL IS:");            B.disp(); // Display the second plynomial            C.padd(A, B); // Calling the function padd System.out.println                 // ("THE SUM OF POLYNOMIALS IS:");            C.disp(); // Display the resultant plynomial        } catch (IOException e) // To catch I/O Exception        {        }    } // End of main function} 


[解决办法]
每天一帖,赚点可用分
[解决办法]
学习 
hehe
[解决办法]
为什么老是有人比我快呢 
我下次得快点才行 
都解答了 帮顶顶
[解决办法]
import java.io.*; //To implement I/O operations

class link {
int coef, exp; // data part for the link list
link next; // next link in list

link(int a, int b) // constructor
{
coef = a; // initialize data
exp = b; // initialize data
}

void display() // To display the list
{
System.out.print(" " + coef + "xe" + exp);
}
} // end of class link

class linklist {
link p, q, d;
link first; // ref to first link on list

linklist() // constructor
{
first = null; // no links on list yet
}

void create(int a, int b) // To insert into the list
{
link node = new link(a, b); // make new link
node.next = first;
first = node;
} // End of function create

void padd(linklist A, linklist B) // To add the polynomials
{
int x; // Temporary variable for storing coef
p = A.first;
q = B.first;
d = first;
while ((p != null) && (q != null)) {
if (p.exp == q.exp) {
x = p.coef + q.coef;
if (x != 0) {
link node = new link(x, p.exp);
// make new link
node.next = d;
d = node;
}
p = p.next; // move to next node of 'A'
q = q.next; // move to next node of 'B'
} else if (p.exp > q.exp) {
link node = new link(p.coef, p.exp);
node.next = d;
d = node;
p = p.next;
} else {
link node = new link(q.coef, q.exp);
node.next = d;
d = node;
q = q.next;
}
}
while (p != null) {
link node = new link(p.coef, p.exp);
node.next = d;
d = node;
p = p.next;
}
while (q != null) {
link node = new link(q.coef, q.exp);
node.next = d;
d = node;
q = q.next;
}
first = d;
} // end of function padd

void disp() // To display the resultant polynomial
{
link current = first; // start at the beginning of the list
while (current != null) // until end of the list
{
current.display();
if (current.next != null) {
System.out.print("+");
} else {
System.out.print(" ");
// print data
}
current = current.next;
// move to next link
}
System.out.println(" ");
} // end of function disp
} // end of class linklist

public class Polyadd // The main class add
{
public static void main(String args[])
// main function
{
try // to catch any exceptions
{
int r = 0, n, x, y;
System.out.println("/* POLYNOMIAL ADDITION */");
linklist A = new linklist(); // make new linklist 'A'
linklist B = new linklist(); // make new linklist 'B'


linklist C = new linklist(); // make new linklist 'C'
BufferedReader f = new BufferedReader(new InputStreamReader(
System.in));
for (int j = 1; j <= 2; j++) {
// To insert the polynomials
System.out.println("Enter the " + j + " polynomial:");
System.out.println("Enter the no. of terms:");
n = Integer.parseInt(f.readLine());
for (int i = n; i > 0; i--) {
System.out.println("Enter the coeff & exponent of " + i
+ " term");
x = Integer.parseInt(f.readLine());
y = Integer.parseInt(f.readLine());
if (j == 1)
A.create(x, y);
// Assign values to links
else
B.create(x, y);
// Assign values to links
}
}
System.out.println("FIRST POLYNOMIAL IS:");
A.disp(); // Display the first plynomial
System.out.println("SECOND POLYNOMIAL IS:");
B.disp(); // Display the second plynomial
C.padd(A, B); // Calling the function padd System.out.println
// ("THE SUM OF POLYNOMIALS IS:");
C.disp(); // Display the resultant plynomial
} catch (IOException e) // To catch I/O Exception
{
}
} // End of main function
}

[解决办法]
不错,学习了~
[解决办法]
慢慢读代码.
[解决办法]
仔细研究,就是楼主的了。

热点排行