Problema con codigo de Listas Enlazadas Simples(Java)

Iniciado por fRNNN, Noviembre 13, 2017, 07:42:40 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

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
Código: 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
Código: 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
Código: 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:)");
}
}