
Ayuda con listas enlazadas de objetos
Publicado por Gerardo (1 intervención) el 27/10/2016 03:35:36
buenas.. que tal... por favor necesito una mano con esta tarea... en principio es hacer una lista enlazada simple de objetos, la cual ya he hecho... el problema radica a la hora de insertar objetos en ella, inserto 4 elementos, y la lista me aparece con 4 elementos, genial, pero los 4 elementos son idénticos al ultimo elemento que ingrese, (extraídos de una matriz en este caso) no se que pasa de los 3 primeros elementos que inserto... eso lo veo al momento de imprimir, pasando como parámetro la posición del nodo... aqui los códigos...
y me imprime el mismo vendedor 4 veces... si llamo al método getTamaño me dice que la lista tiene 4 elementos... pero al imprimir, todos son el mismo... como podría solucionar eso..??
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
/**
* Agrega un nuevo nodo al final de la lista.
* @param valor a agregar.
*/
public void agregar(Vendedor valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setVendedor(valor);
// Consulta si la lista esta vacia.
if (esVacia() == true) {
// Inicializa la lista agregando como inicio al nuevo nodo.
inicio = nuevo;
// Caso contrario recorre la lista hasta llegar al ultimo nodo
//y agrega el nuevo.
} else{
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al ultimo nodo.
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
// Agrega el nuevo nodo al final de la lista.
aux.setSiguiente(nuevo);
}
// Incrementa el contador de tamaño de la lista
tamanio++;
}
/**
* Obtiene el valor de un nodo en una determinada posición.
* @param posicion del nodo que se desea obtener su valor.
* @return un numero entero entre [0,n-1] n = numero de nodos de la lista.
* @throws Exception
*/
public Vendedor getValor(int posicion) throws Exception{
Vendedor hola = new Vendedor();
// Verifica si la posición ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion >=0 && posicion < tamanio){
// Consulta si la posicion es el inicio de la lista.
if (posicion == 0) {
// Retorna el valor del inicio de la lista.
hola = inicio.getVendedor();
return inicio.getVendedor();
}else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta la posición ingresada.
for (int i = 0; i < posicion; i++) {
aux = aux.getSiguiente();
}
// Retorna el valor del nodo.
return aux.getVendedor();
}
// Crea una excepción de Posicion inexistente en la lista.
} else {
throw new Exception("Posicion inexistente en la lista.");
}
}
public static void main(String[] args) throws IOException, Exception {
int cantidad;
Vendedor aux = new Vendedor();
Lista listaEnlazada = new Lista();
System.out.println("Ingrese cantidad de vendedores");
cantidad = teclado.nextInt();
String mat [][] = new String [cantidad][CANTIDAD_DATOS];
mat = Archivo.cargaMatriz(cantidad);
System.out.println("\nEsto es lo leido desde el archivo facilitado:");
Archivo.imprimirMatriz(mat);
for (int i = 0; i < cantidad; i++) {
aux.setNombre(mat[i][0]);
aux.setApellido(mat[i][1]);
aux.setSueldoBase(Integer.parseInt(mat[i][2]));
aux.setPorcComision(Float.parseFloat(mat[i][3]));
listaEnlazada.agregar(aux);
}
System.out.println("Lista creada satisfactoriamente..");
System.out.println("la lista tiene: " + listaEnlazada.getTamanio() + " elementos");
System.out.println("Imprimiendo desde la lista enlazada...");
for (int i = 0; i < cantidad; i++) {
aux = listaEnlazada.getValor(i);
System.out.println("Nombre: " + aux.getNombre());
}
y me imprime el mismo vendedor 4 veces... si llamo al método getTamaño me dice que la lista tiene 4 elementos... pero al imprimir, todos son el mismo... como podría solucionar eso..??
Valora esta pregunta


0