març 11, 2021

Com puc unir dues llistes simplement enllaçades ? JAVA

És una cosa molt senzilla però que m’ha donat una mica de mal de cap, sóc molt novell . La idea és unir dues llistes de manera que :

llista un = 1 , 3, 5

llista dues = 2, 4, 6

El resultat hauria ser :

llista 3 = 1, 2 , 3, 4, 5, 6

Ja vaig fer el codi per generar les altres dues i el mal de cap va de com unir-les.

Tinc la classe llista

 public class listas { nodos primero; byte tamanio; public void Lista() { primero = null; tamanio = 0; } public boolean esVacia() { return primero == null; } public int getTamanio() { return tamanio; } public void agregarAlFinal(int dato){ nodos nuevo = new nodos(); nuevo.setDato(dato); if (esVacia()) { primero = nuevo; } else{ nodos aux = primero; while(aux.getSiguiente() != null){ aux = aux.getSiguiente(); } aux.setSiguiente(nuevo); } tamanio++; } public void MostrarLista(){ if (!esVacia()) { nodos aux = primero; while(aux != null){ System.out.print(" "); aux = aux.getSiguiente(); } System.out.print("\n"); } } }

I la classe Nodes

public class nodos { int dato, dato2; nodos siguiente; public void Nodo(){ this.dato = 0; this.siguiente = null; } public int getDato() { return dato; } public void setDato(int dato) { this.dato = dato; } public void setDato(int dato, int dato2){ this.dato = dato; this.dato2 = dato2; } public int getDato2() { return dato2; } public void setDato2(int dato2) { this.dato2 = dato2; } public nodos getSiguiente() { return siguiente; } public void setSiguiente(nodos siguiente) { this.siguiente = siguiente; } }

I la classe principal .

public static void main(String args) { Scanner leer = new Scanner(System.in); listas lista_est = new listas(); listas lista_prg = new listas();// listatr3s lista_tr3s = new listatr3s(); int est = 0, prg = 0, opc = 0; do{ System.out.print("\n1. Insertar numero de estudiantes." + "\n" + "2. Insertar número de preguntas." + "\n" + "3. Mostrar tamaño de listas vigentes." + "\n" + "4. Juntar las dos listas." + "\n" + "5. Darle <play> a la asignación." + "\n" + "6. Salir. \n"); System.out.print("\nOpción: "); opc = leer.nextByte(); switch(opc){ case 1: System.out.print("Ingrese el número de estudiantes: "); est = leer.nextByte(); for (byte i = 1; i <= est; i++) { lista_est.agregarAlFinal(i); } break; case 2: System.out.print("Ingrese el número de preguntas: "); byte cant2 = leer.nextByte(); for (byte i = 0; i < cant2; i++) { prg = (int)Math.floor(Math.random()*(cant2-1)+1); lista_prg.agregarAlFinal(prg); } break; case 3: System.out.print("Listado estudiantes: "); lista_est.MostrarLista(); System.out.print("Listado preguntas: "); lista_prg.MostrarLista(); break; case 4: System.out.print("Se agrega a la tercera lista.");// lista_tr3s.agregarAlFinal(lista_est, lista_prg); break; case 5: System.out.println("Listado con la asignación: ");// lista_tr3s.Mostrar3Lista(); break; } }while(opc != 6); }

Això em funciona perfectament bé per a generar les llistes , el que tinc entès és que he de fer una altra classe per generar un TERCERA llista. El que es em fa difícil és fer el codi per unir les dues llistes creades .

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *