Ordenamiento de una lista enlazada
Publicado por Francisco (10 intervenciones) el 22/10/2019 01:03:59
Buen día foro espero poder recibir ayuda en verdad que la necesito tengo el siguiente problema tengo que realizar una lista genérica donde ingrese datos de tipo int y estos al momento de mostrarlos al usuario deben estar ordenados la verdad ya he intentado varias cosas pero ninguna me funciona este es el codigo que llevo hasta el momento:
Mi clase Nodo:
Mi clase lista:
Y por ultimo mi clase prueba:
Mi clase Nodo:
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
public class Nodo<T> {
T dato;
Nodo enlace;
public Nodo(T p) {
dato = p;
enlace = null;
}
public Nodo(T p, Nodo n) {
dato = p;
enlace = n;
}
public T getDato() {
return dato;
}
public Nodo getEnlace() {
return enlace;
}
public void setDato(T dato) {
this.dato = dato;
}
public void setEnlace(Nodo enlace) {
this.enlace = enlace;
}
}
Mi clase lista:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
public class Lista<T> {
protected Nodo primero, ultimo;
T p;
public Lista() {
primero = null;
ultimo = null;
}
public boolean EstaVacia() {
if (primero == null) {
return true;
} else {
return false;
}
}
public T insertarCabezaLista(T p) {
primero = new Nodo(p, primero);
if (ultimo == null) {
ultimo = primero;
}
return null;
}
public T insertarCola(T p) {
if (!EstaVacia()) {
ultimo.enlace = new Nodo(p);
ultimo = ultimo.enlace;
} else {
primero = ultimo = new Nodo(p);
}
return null;
}
public void visualizar() {
Nodo<Integer> n = primero;
System.out.println();
while (n != null) {
System.out.print("[" + n.dato + "]-->");
n = n.enlace;
}
}
//Eliminar un nodo especifico
public void eliminar(T p) {
if (!EstaVacia()) {
if (primero == ultimo && p == primero.dato) {
primero = ultimo = null;
} else if (p == primero.dato) {
primero = primero.enlace;
} else {
Nodo anterior, temporal;
anterior = primero;
temporal = primero.enlace;
while (temporal != null && temporal.dato != p) {
anterior = anterior.enlace;
temporal = temporal.enlace;
}
if (temporal != null) {
anterior.enlace = temporal.enlace;
if (temporal == ultimo) {
ultimo = anterior;
}
}
}
}
}
// buscar si un elemnento se encunetra en la lista
public boolean EstaEnLaLista(T p) {
Nodo temporal = primero;
while (temporal != null && temporal.dato != p) {
temporal = temporal.enlace;
}
return temporal != null;
}
public void insertar(Nodo nodo, int posicion) {
Nodo temporal = primero;
int i = 1;
while (i < posicion && temporal.enlace != null) {
i++;
temporal = temporal.enlace;
}
nodo.enlace = temporal.enlace;
temporal.enlace = nodo;
}
}
Y por ultimo mi clase prueba:
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
public class PruebaLista {
public static void main(String[] args) {
Lista<Integer> listita = new Lista<Integer>();
int opcion, el;
do {
opcion = Integer.parseInt(JOptionPane.showInputDialog(null,
"1.-Agregar un elemento al inicio de la lista\n2.-Mostrar los "
+ "datos de la lista\n3.-Agregar al final\n4.-Eliminar un nodo especifico\n"
+ "5.- Buscar un elmento en la lista\n" + "6.- Insertar un elemento entre dos elementos \n"
+ "7.- Salir"));
switch (opcion) {
case 1:
el = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese un numero: "));
listita.insertarCabezaLista(el);
break;
case 2:
listita.visualizar();
break;
case 3:
el = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese un numero: "));
listita.insertarCola(el);
break;
case 4:
el = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese un numero a eliminar:"));
listita.eliminar(el);
JOptionPane.showMessageDialog(null, "El elemento eliminado es: " + el);
break;
case 5:
el = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el elemento a buscar"));
if (listita.EstaEnLaLista(el) == true) {
JOptionPane.showMessageDialog(null, "El elemento: " + el + " si esta en la lista");
} else {
JOptionPane.showMessageDialog(null, "El elemento: " + el + " no esta en la lista");
}
break;
case 6:
Nodo ele = new Nodo(Integer.parseInt(JOptionPane.showInputDialog(null,
"Ingrese el elemento a agregar")));
int posicion = Integer.parseInt(JOptionPane.showInputDialog(null,
"Ingrese despues de que\n"
+ " posicion lo desea ingresar"));
listita.insertar(ele, posicion);
break;
case 7:
JOptionPane.showMessageDialog(null, "Programa finalizado");
break;
default:
JOptionPane.showMessageDialog(null, "Opcion incorrecta");
break;
}
} while (opcion != 7);
}
}
Valora esta pregunta


0