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

Código para decimales en java

Antes que otra cosa
Gracias por existir

Realice una lista enlazada en donde debo introducir varios datos que tienen decimales por ejemplo 16.5 y cuando lo muestra me aparece 16.0 por lo que me genera un problema cuando se muestra el promedio, varianza y desvio.
me pueden orientar que debo realizar.

public class Principal extends javax.swing.JFrame {

Lista numeros= new Lista();
public Principal() {
initComponents();
}

@SuppressWarnings("unchecked")
//
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
Txtdato = new javax.swing.JTextField();
Btnguardar = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
Tamostrar = new javax.swing.JTextArea();
Btnmostrar = new javax.swing.JButton();
Btnpromedio = new javax.swing.JButton();
Mupromedio = new javax.swing.JLabel();
Btndesvio = new javax.swing.JButton();
Mostrarpromedio = new javax.swing.JTextField();
Mostrardesvio = new javax.swing.JTextField();
Btnvarianza = new javax.swing.JButton();
Mostrarvarianza = new javax.swing.JTextField();
Btnborrar = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("Evidencia de aprendizaje Unidad III");
setBackground(new java.awt.Color(204, 255, 255));

jLabel1.setText("Introduca el dato:");

Txtdato.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
TxtdatoActionPerformed(evt);
}
});

Btnguardar.setText("Guardar");
Btnguardar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnguardarActionPerformed(evt);
}
});

Tamostrar.setBackground(new java.awt.Color(204, 255, 204));
Tamostrar.setColumns(20);
Tamostrar.setFont(new java.awt.Font("Aharoni", 1, 12));
Tamostrar.setForeground(new java.awt.Color(255, 255, 204));
Tamostrar.setRows(5);
Tamostrar.setToolTipText("Lista de datos");
Tamostrar.setEnabled(false);
jScrollPane1.setViewportView(Tamostrar);

Btnmostrar.setText("Mostrar");
Btnmostrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnmostrarActionPerformed(evt);
}
});

Btnpromedio.setText("Promedio");
Btnpromedio.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnpromedioActionPerformed(evt);
}
});

Btndesvio.setText("Desvio");
Btndesvio.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtndesvioActionPerformed(evt);
}
});

Mostrarpromedio.setEnabled(false);

Mostrardesvio.setEnabled(false);

Btnvarianza.setText("Varianza");
Btnvarianza.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnvarianzaActionPerformed(evt);
}
});

Mostrarvarianza.setEnabled(false);

Btnborrar.setText("Borrar lista");
Btnborrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnborrarActionPerformed(evt);
}
});

jLabel2.setText("Evidencia de Aprendizaje");

jButton1.setText("Salir");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(Btnmostrar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(Btnborrar))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(Btnpromedio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(Btndesvio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(Btnvarianza, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Mostrarpromedio, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE)
.addComponent(Mostrardesvio, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE)
.addComponent(Mostrarvarianza, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE))
.addGap(48, 48, 48))
.addGroup(layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jButton1)
.addContainerGap())))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Txtdato, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(Btnguardar)
.addGap(170, 170, 170)
.addComponent(Mupromedio, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
.addGroup(layout.createSequentialGroup()
.addGap(149, 149, 149)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(166, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(Mupromedio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(Txtdato, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Btnguardar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGap(17, 17, 17)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(55, 55, 55)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Btndesvio)
.addComponent(Mostrardesvio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Btnpromedio)
.addComponent(Mostrarpromedio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Btnvarianza)
.addComponent(Mostrarvarianza, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(85, 85, 85))
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 209, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Btnborrar)
.addComponent(jButton1))
.addComponent(Btnmostrar))
.addGap(26, 26, 26))
);

pack();
}//

private void TxtdatoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void BtnguardarActionPerformed(java.awt.event.ActionEvent evt) {
double dato=Double.parseDouble(Txtdato.getText());
numeros.insFrente(dato);
}

private void BtnmostrarActionPerformed(java.awt.event.ActionEvent evt) {
String s=numeros.recorre();
Tamostrar.setText( s+"\n");
}

private void BtnpromedioActionPerformed(java.awt.event.ActionEvent evt) {
double prom=numeros.promedio();
String promedio;
promedio = Double.toString(prom);
Mostrarpromedio.setText(promedio);

}

private void BtndesvioActionPerformed(java.awt.event.ActionEvent evt) {
double var=numeros.varianza();// TODO add your handling code here:
// String aString = Double.toString(aDouble);String a Double
// int aInt = Integer.parseInt(aString); String a entero
//String aString = Integer.toString(aInt); entero a String
//Double valor=Double.parseDouble("321.12335"); String a double
String desvio ;
//DecimalFormat df = new DecimalFormat("0.0000");//formateador marca error
var= Math.pow(var,.5);
desvio= Double.toString(var);
Mostrardesvio.setText(desvio);
}

private void BtnvarianzaActionPerformed(java.awt.event.ActionEvent evt) {
double var = numeros.varianza();// TODO add your handling code here:
String varianza ;
varianza= Double.toString(var);
Mostrarvarianza.setText(varianza);
}

private void BtnborrarActionPerformed(java.awt.event.ActionEvent evt) {
numeros.borradatos();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}

public static void main(String args[]) {
p(2.123123);
p(2.0);
}
public static void p(double d ) {
System.out.printf("%.2f",d);
System.out.println();

/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Principal().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton Btnborrar;
private javax.swing.JButton Btndesvio;
private javax.swing.JButton Btnguardar;
private javax.swing.JButton Btnmostrar;
private javax.swing.JButton Btnpromedio;
private javax.swing.JButton Btnvarianza;
private javax.swing.JTextField Mostrardesvio;
private javax.swing.JTextField Mostrarpromedio;
private javax.swing.JTextField Mostrarvarianza;
private javax.swing.JLabel Mupromedio;
private javax.swing.JTextArea Tamostrar;
private javax.swing.JTextField Txtdato;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
}
___________
public class Nodo {
double info;
Nodo sig;
Nodo(double dato){
info=dato;
sig=null;
}
}
__________
public class Lista {
Nodo cabeza;
Lista( )
{
cabeza=null;
}
public boolean listaVacia( ){
return(cabeza==null);

}
public void insFrente(double dato){
Nodo nuevo= new Nodo((int) dato);

if (listaVacia( ))
{
cabeza=nuevo;
}
else{
nuevo.sig=cabeza;
cabeza=nuevo;
}

}

public String borradatos( ){
Nodo nuevo=null;
if (listaVacia())
{
nuevo.sig=cabeza;
cabeza=nuevo;
}
else{
cabeza=nuevo;
}
return null;
}
public String recorre( ){
String s="Lista de datos:\n";
Nodo aux=cabeza;
while(aux!=null){
s+=aux.info + "\n";
aux=aux.sig;
}
return s;
}
public double promedio( ){
float prom=0;
int n=0;
Nodo aux=cabeza;
while(aux!=null){
n++;
prom+=(aux.info);
aux=aux.sig;
}
prom=prom/n;
return prom;
}

public double varianza( ){
float prom=0;
double var=0;
int n=0;
Nodo aux=cabeza;

while(aux!=null){
n++;
prom+=(aux.info);
aux=aux.sig;

}
prom=prom/n;

aux=cabeza;

while (aux != null) {
var+= Math.pow((aux.info-prom), 2);
aux = aux.sig;

}

//System.out.println("Promedio "+prom+ "Var "+var);

return var/(n-1);
}

}

Buen esfuerzo

Hola, está muy bien el esfuerzo que hiciste con tu código, solo te digo un par de sugerencias para postear tu duda en un sitio como este:

- Buscar y experimentar antes de preguntar (algo que se nota que hiciste)

- Crear tu pregunta en un hilo o post nuevo, no preguntar en hilos hechos por otras personas y menos si tienen varios años de haberse posteado, a menos que tu respuesta tenga algo que ver directamente con el problema de aquella persona

- Cuando pegues código, usa las etiquetas < code > aqui va el código < / code > (sin espacios) para que sea más legible, te debería aparecer algo así:

public class Nodo {
        double info;
        Nodo sig;

        Nodo(double dato) {
                info = dato;
                sig = null;
        }
}

-También sólo postea código relevante, no postees todo porque a veces es difícil de seguir o de probar

En cuanto a tu duda, el problema está en el método Lista.insFrente(double dato): le estás pasando un double y luego creas un nodo al que le pasas el double casteándolo a int:

Nodo nuevo = new Nodo((int) dato);

Solo borra el cast a (int)