Estructura de datos java (Listas simplemente enlazadas)

marzo 25, 2010 | | 0 comentarios | Java Posteado por dementexmaster

Empezaremos creando la clase que nos permitira recorrer la lista, a esta le asignaremos el nombre de Nodo

1
2
3
4
5
6
7
8
9
10
public class Nodo {
 Nodo nodoDer;
 int  dato;
 
public  Nodo(int dato) {
 this.dato = dato;
 this.nodoDer = null;
 }
 
}

Nesesitaremos un nodo para agregar a la lista este metodo ira agregando todo al final de la misma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public  ListaS addLast(int dato) {
 if(siVacio()) {
 Nodo nuevo = new Nodo(dato);
 primero = nuevo;
 ultimo = nuevo;
 nuevo.nodoDer =  nuevo;
 }
 else {
 Nodo nuevo = new Nodo(dato);
 nuevo.nodoDer =  null;
 ultimo.nodoDer =  nuevo;
 ultimo = nuevo;
 }
 this.tamano++;
 return  this;
 }

De igual forma se nesesita un metodo para borrar datos de la lista:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public  Nodo deleteLast() {
 Nodo eliminar = null;
 if(siVacio()) {
JOptionPane.showMessageDialog(null, "La lista se encuentra vacia");
 return  null;
 }
 if(primero == ultimo) {
 primero = null;
 ultimo = null;
 }
 else {
 Nodo actual = primero;
 while(actual.nodoDer !=  ultimo) {
 actual = actual.nodoDer;
 }
 eliminar = actual.nodoDer;
 actual.nodoDer =  null;
 
ultimo = actual;
 }
 this.tamano--;
 return  eliminar;
 }

Nuestro codigo completo quedaria de la siguiente manera:

Classe principal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import javax.swing.JOptionPane;
 
public class ListaS {
    private Nodo primero;
    private Nodo ultimo;
    private int tamano;
 
    public ListaS() {
        this.primero = null;
        this.ultimo = null;
        this.tamano = 0;
    }
 
//Metodo utilizado para denotar que la lista se encuentra vacia.
    public boolean siVacio() {
        return (this.primero == null);
    }
 
//Metodo para agregar al final de la lista.
    public ListaS addLast(int dato) {
        if(siVacio()) {
            Nodo nuevo = new Nodo(dato);
            primero = nuevo;
            ultimo = nuevo;
            nuevo.nodoDer = nuevo;
        }
        else {
            Nodo nuevo = new Nodo(dato);
            nuevo.nodoDer = null;
            ultimo.nodoDer = nuevo;
            ultimo = nuevo;
        }
        this.tamano++;
        return this;
    }
 
//Metodo para borrar al final de la lista.
    public Nodo deleteLast() {
        Nodo eliminar = null;
        if(siVacio()) {
            JOptionPane.showMessageDialog(null, "La lista se encuentra vacia");
            return null;
        }
        if(primero == ultimo) {
            primero = null;
            ultimo = null;
        }
        else {
            Nodo actual = primero;
            while(actual.nodoDer != ultimo) {
                actual = actual.nodoDer;
            }
            eliminar = actual.nodoDer;
            actual.nodoDer = null;
 
            ultimo = actual;
        }
        this.tamano--;
        return eliminar;
    }
 
//Metodo que imprime el tamaño de la lista.
    public void tamano() {
        JOptionPane.showMessageDialog(null, "El tamaño es:\n " + this.tamano);
    }
 
//Metodo que imprime la lista y los valores ingresados.
    public void imprimir() {
        if(tamano != 0) {
            Nodo temp = primero;
            String str = "";
            for(int i = 0; i < this.tamano; i++) {
                str = str + temp.dato + "\n";
                temp = temp.nodoDer;
            }
            JOptionPane.showMessageDialog(null, str);
        }
    }
}

Clase Nodo:

1
2
3
4
5
6
7
8
9
10
public class Nodo {
 Nodo nodoDer;
 int  dato;
 
public  Nodo(int dato) {
 this.dato = dato;
 this.nodoDer = null;
 }
 
}
  • No Related Post

Escribe un comentario

You must be logged in to post a comment.