Dados dos polinomios representados por una lista enlazada. Escribe una función que sume estas listas significa sumar los coeficientes que tienen las mismas potencias variables.
Ejemplo:
Input: 1st number = 5x2 + 4x1 + 2x0 2nd number = -5x1 - 5x0 Output: 5x2-1x1-3x0 Input: 1st number = 5x3 + 4x2 + 2x0 2nd number = 5x^1 - 5x^0 Output: 5x3 + 4x2 + 5x1 - 3x0
Java
import java.io.*; import java.util.Scanner; class Polynomial { public static Node addPolynomial(Node p1, Node p2) { Node a = p1, b = p2, newHead = new Node(0, 0), c = newHead; while (a != null || b != null) { if (a == null) { c.next = b; break; } else if (b == null) { c.next = a; break; } else if (a.pow == b.pow) { c.next = new Node(a.coeff + b.coeff, a.pow); a = a.next; b = b.next; } else if (a.pow > b.pow) { c.next = new Node(a.coeff, a.pow); a = a.next; } else if (a.pow < b.pow) { c.next = new Node(b.coeff, b.pow); b = b.next; } c = c.next; } return newHead.next; } } // Utilities for Linked List // Nodes class Node { int coeff; int pow; Node next; Node(int a, int b) { coeff = a; pow = b; next = null; } } // Linked List main class class LinkedList { public static void main(String args[]) { Node start1 = null, cur1 = null, start2 = null, cur2 = null; int[] list1_coeff = {5, 4, 2}; int[] list1_pow = {2, 1, 0}; int n = list1_coeff.length; int i = 0; while (n-- > 0) { int a = list1_coeff[i]; int b = list1_pow[i]; Node ptr = new Node(a, b); if (start1 == null) { start1 = ptr; cur1 = ptr; } else { cur1.next = ptr; cur1 = ptr; } i++; } int[] list2_coeff = {-5, -5}; int[] list2_pow = {1, 0}; n = list2_coeff.length; i = 0; while (n-- > 0) { int a = list2_coeff[i]; int b = list2_pow[i]; Node ptr = new Node(a, b); if (start2 == null) { start2 = ptr; cur2 = ptr; } else { cur2.next = ptr; cur2 = ptr; } i++; } Polynomial obj = new Polynomial(); Node sum = obj.addPolynomial(start1, start2); Node trav = sum; while (trav != null) { System.out.print(trav.coeff + "x^" + trav.pow); if (trav.next != null) System.out.print(" + "); trav = trav.next; } System.out.println(); } }
Producción:
1st Number: 5x^2+4x^1+2x^0 2nd Number: -5x^1-5x^0 Added polynomial: 5x^2-1x^1-3x^0
Complejidad de tiempo: O(m + n) donde m y n son el número de Nodes en la primera y segunda lista respectivamente.
¡ Consulte el artículo completo sobre cómo sumar dos polinomios usando la lista enlazada para obtener más detalles!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA