
Consulta sobre listas en enlazadas
Publicado por G (1 intervención) el 05/06/2016 21:21:37
Buenas. Qué tal??
Tengo una consulta con respecto a un ejercicio de listas enlazadas.
La consigna es hacer una clase NodoInt, para represetar los nodos de una lista en enlazada de enteros, y una clase ListaInt para representar la dicha lista.
He aquí mis clases por el momento:
Clase NodoInt
Clase ListaInt
Lo siguiente que tengo que agregarle a ListaInt es una función "boolean esSinDuplicados()" que informa si la lista no tiene elementos repetidos. Me imagino que necesito algo así como un doble ciclo pero no me sale con este tipo de listas.
Cualquier tip que me puedan tirar es muy agradecido. Saludos!
Tengo una consulta con respecto a un ejercicio de listas enlazadas.
La consigna es hacer una clase NodoInt, para represetar los nodos de una lista en enlazada de enteros, y una clase ListaInt para representar la dicha lista.
He aquí mis clases por el momento:
Clase NodoInt
1
2
3
4
5
6
public class NodoInt {
int elemento;
NodoInt siguiente;
}
Clase ListaInt
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
public class ListaInt {
NodoInt primero;
void imprimir(){
NodoInt actual=primero;
while(actual!=null){
System.out.print(actual.elemento+" ");
actual=actual.siguiente;
}
}
int largo(){
if(primero==null){
return 0;
}
int longitud=0;
NodoInt actual=primero;
while(actual!=null){
longitud++;
actual=actual.siguiente;
}
return longitud;
}
boolean estaVacia(){
if(primero==null){
return true;
}
return false;
}
int suma(){
if(primero==null){
return 0;
}
int suma=0;
NodoInt actual=primero;
while(actual!=null){
suma=suma+actual.elemento;
actual=actual.siguiente;
}
return suma;
}
int promedio(){
if(primero==null){
return 0;
}
int suma=0;
int cantidad=0;
NodoInt actual=primero;
while(actual!=null){
cantidad++;
suma=suma+actual.elemento;
actual=actual.siguiente;
}
return (suma/cantidad);
}
int iesimo(int i){
int indice=0;
NodoInt actual=primero;
while(actual!=null){
if(indice==i){
return actual.elemento;
}
indice++;
actual=actual.siguiente;
}
return -1;
}
int maximo(){
int elementoActual=-1;
NodoInt actual=primero;
while(actual!=null){
if(actual.elemento>elementoActual){
elementoActual=actual.elemento;
}
actual=actual.siguiente;
}
return elementoActual;
}
boolean estaOrdenada(){
if(primero==null){
return true;
}
int elementoActual=-1;
NodoInt actual=primero;
while(actual!=null){
if(actual.elemento>=elementoActual){
elementoActual=actual.elemento;
actual=actual.siguiente;
}
else{
return false;
}
}
return true;
}
void rotarDerecha(){
NodoInt actual=primero;
int elementoActual=actual.elemento;
int aux=-1;
while(actual!=null){
if(actual.siguiente==null){
aux=actual.elemento;
actual.elemento=elementoActual;
}
actual=actual.siguiente;
}
primero.elemento=aux;
}
Lo siguiente que tengo que agregarle a ListaInt es una función "boolean esSinDuplicados()" que informa si la lista no tiene elementos repetidos. Me imagino que necesito algo así como un doble ciclo pero no me sale con este tipo de listas.
Cualquier tip que me puedan tirar es muy agradecido. Saludos!
Valora esta pregunta


0