Sebasprestige

Páginas: 5 (1053 palabras) Publicado: 6 de noviembre de 2012
public class ListaGeneric { //Una lista es genérica cuando puedo insertar en cualquier parte de la lista
class Nodo {
int info;
Nodo sig;
}

private Nodo raiz;
public ListaGenerica () {
raiz=null;
}
______________________________________________________________________________________________________

//Método insertar unnodo, se tiene como datos de entrada la posición en la que se quiere insertar (pos) y el valor que se quiere insertar (x).
void insertar (int pos, int x)
{

//Primero con un if verificamos que exista esa posición en la lista (por ejemplo si la lista tiene 5 nodos podemos insertar hasta la posición 6, es decir uno más allá del último):
if (pos <= cantidad () + 1) {//Si ingresa al if, quiere decir que la posición si es válida, entonces ya podemos crear el nodo, llamaremos nuevo al nodo que vamos a crear:
Nodo nuevo = new Nodo ();
nuevo.info = x;

//Ahora debemos analizar si la inserción es al principio de la lista, al final o en medio ya que los enlaces varían según donde se lo inserta.
Veamos uno por uno, primero si se insertaal principio de la lista preguntamos si en pos llega un 1:
if (pos == 1){

//Si llega un 1 lo enlazamos el puntero sig del nodo que creamos con la dirección del primer nodo de la lista (raiz apunta siempre al primer nodo de la lista) y luego desplazamos raiz al nodo que acabamos de crear:
nuevo.sig = raiz;
raiz = nuevo;
} else

//Sino se inserta al principio de la lista, entonces preguntamos si se inserta al final:
if (pos == cantidad () + 1) {

//En caso de insertarse al final recorremos la lista hasta el último nodo: para esto nos valemos de un nodo auxiliar (reco de recorrido).
Nodo reco = raiz;
while (reco.sig != null) {
reco =reco.sig;
}

//luego enlazamos el puntero sig del último nodo de la lista con la dirección del nodo que acabamos de crear (disponemos en sig del nodo creado el valor null, recordemos que no hay otro nodo más adelante)
reco.sig = nuevo;
nuevo.sig = null;
} else {

//Si no se inserta al principio o al final significa quetenemos que insertar en medio de la lista.
Disponemos un for donde avanzamos un puntero auxiliar y nos detenemos una posición antes a donde tenemos que insertarlo, usamos el ciclo for por lo que se sabe cual es la posición en la que se quiere insertar.
Nodo reco = raiz;
for (int f = 1 ; f <= pos - 2 ; f++)
reco = reco.sig;//Disponemos otro puntero auxiliar que apunte al nodo próximo a donde está apuntando reco. Ahora enlazamos el puntero sig del nodo apuntado por reco con la dirección del nodo creado y el puntero sig del nodo creado con la dirección del nodo siguiente
Nodo siguiente = reco.sig;
reco.sig = nuevo;
nuevo.sig = siguiente;
}
}
}Extrae la información del nodo de la posición indicada (pos). Se debe eliminar el nodo.
int extraer(int pos)

Borra el nodo de la posición (pos).
void borrar(int pos)

Intercambia las informaciones de los nodos de las posiciones pos1 y pos2.
void intercambiar(int pos1,int pos2)

Retorna el valor del nodo con mayor información.int mayor()

Retorna la posición del nodo con mayor información.
int posMayor()

Retorna la cantidad de nodos de la lista.
int cantidad()

Debe retornar true si la lista está ordenada de menor a mayor, false en caso contrario.
boolean ordenada()

Debe retornar true si existe la información que llega en el parámetro, false en...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS