Hola gente soy nuevo en la programación y tengo un problema con un código de listas enlazadas en Java. Tiene solo las opciones para agregar al principio de la lista, al ultimo y para mostrar la lista. El problema es cuando quiero agregar un nodo al final de la lista, ya que no importa el valor que ponga(por teclado) o el tipo de variable que use, me lo toma como valor 0 y no logro saber porque. Les dejo el codigo por si alguien le quiere pegar una mirada.. Gracias desde ya, Saludos :)
nodo.java
public class nodo {
private int dato;
private nodo siguiente;
// Inicializamos variables
public void nodo() {
this.dato = 0;
this.siguiente = null;
}
//Sets and Gents
public int getDato() {
return dato;
}
public void setDato(int dato) {
this.dato = dato;
}
public nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(nodo siguiente) {
this.siguiente = siguiente;
}
}
lista.java
public class lista {
private nodo inicio;
private int tamaño;
// Inicializamos var
public void lista() {
this.inicio = null;
this.tamaño = 0;
}
// Sets and Gets
public nodo getInicio() {
return inicio;
}
public void setInicio(nodo inicio) {
this.inicio = inicio;
}
public int getTamaño() {
return tamaño;
}
public void setTamaño(int tamaño) {
this.tamaño = tamaño;
}
// Agregar primero
public void agregarPrimero(int dato) {
nodo nuevo = new nodo();
nuevo.setDato(dato);
if(inicio == null) {
inicio = nuevo;
}
else {
nuevo.setSiguiente(inicio);
inicio = nuevo;
}
tamaño++;
}
// Agregar ultimo
public void agregarUltimo(int dato) {
nodo nuevo = new nodo();
if(inicio == null) {
inicio = nuevo;
}
else {
nodo aux; // nodo auxliar para recorrer la lista
aux = inicio;
// Mientras el nodo siguiente no sea null vamos recorriendo la lista hasta llegar al ultimo
while(aux.getSiguiente() != null) {
aux = aux.getSiguiente();
}
aux.setSiguiente(nuevo);
}
tamaño++;
}
//Mostrar lista
public void mostrarLista() {
int i = 1;
nodo aux; // nodo auxiliar para recorrer la lista
aux = inicio; // le damos a auxiliar el valor del inicio de la lista
if(inicio != null) {
System.out.println("\n\nMostrando lista...");
while(aux != null) {
System.out.print(" ("+i+") "+aux.getDato()+" ");
aux = aux.getSiguiente();
i++;
}
}
else
System.out.println("\n La lista esta vacia.");
}
}
main.java
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
//variables para el munu
int op;
char key;
// variable para alojar el valor del nodo que vamos a ingresar por teclado
int dat;
//creamos la lista
lista list = new lista();
// MENU
System.out.print("\n :::::::::::::::: L I S T A S :::::::::::::\n\n\n\n");
Scanner sc = new Scanner (System.in);
do {
do {
System.out.println("(1) AGREGAR PRIMERO");
System.out.println("(2) AGREGAR ULTIMO");
System.out.println("(3) MOSTRAR LISTA\n\n");
op = sc.nextInt();
switch(op) {
case 1:
System.out.print("\n\nIngrese el dato: "); // Agregar primero
dat = sc.nextInt();
list.agregarPrimero(dat);
break;
case 2:
System.out.print("\n\nIngrese el dato: "); // Agregar ultimo
dat = sc.nextInt();
list.agregarUltimo(dat);
break;
case 3:
list.mostrarLista(); // Mostrar lista
}
}while(op < 1 && op > 3);
System.out.println(" Desea realizar otra opcion? (S/n)");
key = sc.next().charAt(0);
}while(key == 's' || key == 'S');
System.out.print("\n\nGracias por utilizar:)");
}
}