Software Guru Conference & Expo 2014

Lista Enlazada

este es un trabajo qe tengo qe realizar y les pido un poco de ayuda jaja y esto va para todos los buenos programadores,, espero respuestas

Desarrollar un programa en Java que implemente listas enlazadas para almacenar los nombres de sus compañeros de clase. Se deberá incluir un menú que permita realizar las operaciones básicas en la lista enlazada:

Crear una lista enlazada.
Insertar nombres al inicio de la lista enlazada.
Insertar nombres al final de la lista.
Insertar nombres entre nodos de la lista.
Buscar un nombre en la lista (para comprobar su existencia).
Eliminar nombres de la lista.
Recorrer la lista de nombres.
Comprobar si la lista está vacía.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Si entendí bien tu petición,

Si entendí bien tu petición, muestra el código que ya hiciste, y pregunta acerca del paso/proceso donde te estás atorando...
Qué es lo que llevas?
Y por favor, postea el código entre tags de <code> y </code>

Mas informacion

Es necesario que presentes lo que has hecho para poder ayudarte, Saludos y hasta luego.

aqui les dejo de nuevo el programa ya que el otro me lo borraron

import java.util.*;
public class lista{
Scanner leer=new Scanner(System.in);
Nodo primero;
public lista(){
primero=null;
}

public void crearlista(){
if(primero==null){
System.out.print("NOMBRE: ");
String lo=leer.next();
primero= new Nodo(lo, primero);}
}

public void recorrerlista(){
Nodo n;
n=primero;
if(n==null){
System.out.println("No tiene nombres");}
else{
while(n!=null){
System.out.println(n.dato);
n=n.referencia;}}
}

public void insertarPrimero(){
Nodo n=primero;
if(n==null){
System.out.println("No tiene nombres");}
else{
System.out.print("Dame el nombre :");
String y=leer.next();
Nodo nuevo=new Nodo(y);
nuevo.referencia=n;
primero=nuevo;}
}

public void insertarUltimo(){
Nodo ultimo=null, n=primero;
if(n==null){
System.out.println("No tiene nombres");}
else{
while(n!=null){
ultimo=n;
n=n.referencia;}
System.out.print("Dame el nuevo nombre :");
String y=leer.next();
ultimo.referencia=new Nodo(y);}
}

public void eliminarElemento(){
Nodo n=primero, anterior=null;
boolean encontrado=false;
if(n==null){
System.out.println("No tiene nombres");}
else{
System.out.print("Eliminar :");
Scanner leer=new Scanner(System.in);
String nnom=leer.next();
while((n!=null)&&(encontrado==false)){
encontrado=(nnom.equals(n.dato));
if(encontrado==false){
anterior=n;
n=n.referencia;}}
if(n!=null){
if(n==primero){
primero=n.referencia;}
else{
anterior.referencia=n.referencia;}}}
}

public void insertarElemento(){
Nodo ref=null, n=primero;
boolean encontrado=false;
Scanner leer=new Scanner(System.in);
if(n==null){
System.out.println("No tiene nombres");}
else{
System.out.print("Insertar un elemento despues del :");
String x=leer.next();
while(n!=null){
if(x.equals(n.dato)){
ref=n;
encontrado=true;}
n=n.referencia;}
if(encontrado==true){
System.out.print("Nuevo nombre :");
String y=leer.next();
Nodo nuevo=new Nodo(y);
nuevo.referencia=ref.referencia;
ref.referencia=nuevo;}
else{
System.out.println("Elemento no Encontrado");}}
}

public void buscarElemento(){
Nodo n=primero;
boolean encontrado=false;
if(n==null){
System.out.println("No tiene nombres");}
else{
System.out.print("Escribe el nombre :");
String tw="";
tw=leer.next();
while(n!=null){
if(tw.equals(n.dato)){
System.out.println("Nombre '"+tw+"' fue encontrado en la posicion :"+n);
encontrado=true;}
n=n.referencia;}
if(encontrado==false){
System.out.println("El nombre :"+tw+" no existe");}}
}

public static void main(String args[]){
Scanner leer=new Scanner(System.in);
lista Lista= new lista();
int opcion=0;
while(opcion!=8){
System.out.println("1.- Crear una lista enlazada");
System.out.println("2.- Insertar nombres al inicio de la lista enlazada");
System.out.println("3.- Insertar nombres al final de la lista");
System.out.println("4.- Insertar nombres entre nodos de la lista");
System.out.println("5.- Buscar un nombre en la lista");
System.out.println("6.- Eliminar nombres de la lista.");
System.out.println("7.- Recorrer la lista de nombres");
System.out.println("8.- Salir");
System.out.print("Teclea una Opcion :");
opcion=leer.nextInt();
switch(opcion){
case(1): Lista.crearlista();
break;
case(2): Lista.insertarPrimero();
break;
case(3): Lista.insertarUltimo();
break;
case(4): Lista.insertarElemento();
break;
case(5): Lista.buscarElemento();
break;
case(6): Lista.eliminarElemento();
break;
case(7): Lista.recorrerlista();
break;
}
}
}
}

public class Nodo{
String dato="";
Nodo referencia;
public Nodo(String x){
dato=x;
referencia=null; }
public Nodo(String x, Nodo n){
dato=x;
referencia=n; }}

Imagen de neko069

Quién iba a pensar que Bill

Quién iba a pensar que Bill Gates sí programa ... ;¬)

Cual es tu duda?

Cual es tu duda, problema o error que te arroja el compilador?, no pretendas que te hagamos el trabajo por qué personalmente no lo voy hacer.
Saludos.

corre buen aporte

corre buen aporte

duda

hola que tal estoy trabajando con listas pero la duda es la siguiente para que me puedan explicar tomaremos el ejemplo que tenemos arriba lo que quiero
es que poder borrar el ultimo elemento de la lista yo implemente este código pero me marca un error me podrían ayudar mil gracias.

public void EleminarFin()
{
Nodo ultimo=null, ref=null;
if(ultimo.referencia!=null){
System.out.println("No es el ultimo elemento");}

else{
if(ultimo.referencia==null){
ref=ultimo;
ref.referencia=null;}
}
}

lo que esta pasando es que

lo que esta pasando es que lanza una excepcion NullPointerException por que ultimo lo inicializas con null por lo tanto la excepcion se lanza cuando intentas acceder a referencia, una solucion seria pasar como parametro a tu metodo el objeto de tipo Nodo que deseas eliminar