• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Feb 14th, 2020 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1.     /**
2.      * Returns the sum of two polynomials - DOES NOT change either of the input polynomials.
3.      * The returned polynomial MUST have all new nodes. In other words, none of the nodes
4.      * of the input polynomials can be in the result.
5.      *
6.      * @param poly1 First input polynomial (front of polynomial linked list)
7.      * @param poly2 Second input polynomial (front of polynomial linked list
8.      * @return A new polynomial which is the sum of the input polynomials - the returned node
9.      *         is the front of the result polynomial
10.      */
11.     public static Node add(Node poly1, Node poly2) {
12.         if (poly1 == null && poly2 == null) return null;
13.         if (poly1 == null) return poly2;
14.         if (poly2 == null) return poly1;
15.         Node front = new Node(0, 0, null);
16.         Node ptr = front;
17.         while (poly1 != null && poly2 != null) {
18.             if (poly1.term.degree == poly2.term.degree) {
19.                 ptr.term.degree = poly1.term.degree;
20.                 ptr.term.coeff = poly1.term.coeff + poly2.term.coeff;
21.                 poly1 = poly1.next;
22.                 poly2 = poly2.next;
23.             } else if (poly1.term.degree < poly2.term.degree) {
24.                 ptr.term.degree = poly1.term.degree;
25.                 ptr.term.coeff = poly1.term.coeff;
26.                 poly1 = poly1.next;
27.             } else if (poly1.term.degree > poly2.term.degree) {
28.                 ptr.term.degree = poly2.term.degree;
29.                 ptr.term.coeff = poly2.term.coeff;
30.                 poly2 = poly2.next;
31.             }
32.             ptr.next = new Node(0, 0, null);
33.             ptr = ptr.next;
34.         }
35.
36.         Node ptr2 = null;
37.         if (poly1 != null) ptr2 = poly1;
38.         if (poly2 != null) ptr2 = poly2;
39.         while (ptr2 != null) {
40.             ptr.term.degree = ptr2.term.degree;
41.             ptr.term.coeff = ptr2.term.coeff;
42.             if (ptr2.next != null) {
43.                 ptr.next = new Node(0, 0, null);
44.                 ptr = ptr.next;
45.             }
46.             ptr2 = ptr2.next;
47.         }
48.         simplify(front);
49.         return front;
50.     }
51.
52.     private static void simplify(Node first) {
53.         Node ptr1 = first;
54.         Node ptr2;
55.         Node tmp;
56.
57.         while (ptr1 != null && ptr1.next != null) {
58.             ptr2 = ptr1;
59.
60.             while (ptr2.next != null) {
61.                 if (ptr1.term.degree == ptr2.next.term.degree) {
62.                     ptr1.term.coeff = ptr1.term.coeff + ptr2.next.term.coeff;
63.                     tmp = ptr2.next;
64.                     ptr2.next = ptr2.next.next;
65.                 } else {
66.                     ptr2 = ptr2.next;
67.                 }
68.             }
69.             ptr1 = ptr1.next;
70.         }
71.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Top