📌  相关文章
📜  使用链表添加两个多项式的Java程序(1)

📅  最后修改于: 2023-12-03 15:22:27.191000             🧑  作者: Mango

使用链表添加两个多项式的Java程序

这个Java程序实现了使用链表添加两个多项式的功能,通过输入两个多项式的系数和指数来构建多项式,然后将两个多项式相加并输出结果。

实现方法

该程序通过定义一个Node类来实现链表,该节点包含多项式的系数和指数,并定义addNode方法来添加节点。另外,还定义了addPoly方法实现多项式的相加。

代码片段
/**
 * 节点类
 */
class Node {
    int coefficient;
    int exponent;
    Node next;
    
    public Node(int coefficient, int exponent) {
        this.coefficient = coefficient;
        this.exponent = exponent;
    }
}

/**
 * 多项式类
 */
class Polynomial {
    Node head;

    /**
     * 添加节点
     */
    public void addNode(int coefficient, int exponent) {
        Node newNode = new Node(coefficient, exponent);
        if (head == null) {
            head = newNode;
        } else {
            Node temp = head;
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = newNode;
        }
    }

    /**
     * 相加两个多项式
     */
    public Polynomial addPoly(Polynomial p1, Polynomial p2) {
        Polynomial sum = new Polynomial();
        Node temp1 = p1.head;
        Node temp2 = p2.head;
        while (temp1 != null && temp2 != null) {
            if (temp1.exponent == temp2.exponent) {
                int c = temp1.coefficient + temp2.coefficient;
                sum.addNode(c, temp1.exponent);
                temp1 = temp1.next;
                temp2 = temp2.next;
            } else if (temp1.exponent > temp2.exponent) {
                sum.addNode(temp1.coefficient, temp1.exponent);
                temp1 = temp1.next;
            } else if (temp1.exponent < temp2.exponent) {
                sum.addNode(temp2.coefficient, temp2.exponent);
                temp2 = temp2.next;
            }
        }
        while (temp1 != null) {
            sum.addNode(temp1.coefficient, temp1.exponent);
            temp1 = temp1.next;
        }
        while (temp2 != null) {
            sum.addNode(temp2.coefficient, temp2.exponent);
            temp2 = temp2.next;
        }
        return sum;
    }

    /**
     * 打印多项式
     */
    public void printPoly() {
        Node temp = head;
        while (temp != null) {
            System.out.print(temp.coefficient + "x^" + temp.exponent + " ");
            temp = temp.next;
        }
        System.out.println();
    }
}

public class Main {
    public static void main(String[] args) {
        Polynomial p1 = new Polynomial();
        Polynomial p2 = new Polynomial();

        // 添加多项式1
        p1.addNode(2, 3);
        p1.addNode(3, 2);
        p1.addNode(4, 0);

        // 添加多项式2
        p2.addNode(3, 4);
        p2.addNode(1, 3);
        p2.addNode(1, 1);

        // 计算多项式和
        Polynomial sum = p1.addPoly(p1, p2);
        System.out.print("多项式1: ");
        p1.printPoly();
        System.out.print("多项式2: ");
        p2.printPoly();
        System.out.print("相加后的多项式: ");
        sum.printPoly();
    }
}

代码中定义了Node类和Polynomial类,其中Node类中包含了多项式的系数和指数,Polynomial类中包含了添加节点、相加多项式、打印多项式的方法。在main函数中,我们首先创建了两个多项式,然后添加节点并计算它们的和,最后输出结果。

总结

该Java程序实现了使用链表添加两个多项式的功能,通过定义Node类和Polynomial类,实现了添加节点、相加多项式、打印多项式的基本操作。这种使用链表的方式既适用于多项式加法,也适用于其它类似的算法问题。