Академический Документы
Профессиональный Документы
Культура Документы
Semana 6-7
PRIMERA UNIDAD 2
Competencias
Contenido
Estructuras dinámicas lineales: listas. Fundamentación. Clasificación de listas enlazadas. Listas simples y operaciones.
Inserción de un elemento en una lista. Búsqueda en listas enlazadas. Eliminación de un nodo en una lista. Lista ordenada.
Listas enlazadas
Mapa Conceptual
Lineales
Operaciones
Pilas
ESTRUCTURAS
DINAMICAS LINE
Colas
No lineales
1. LISTAS ENLAZADAS
Es una colección de elementos enlazados dispuestos uno detrás de otros en la que cada elemento
se conecta al siguiente, la idea es tener un conjunto de elementos llamados nodos, en las cuales
contienen la dirección de un nodo y el elemento almacenado. Así como se muestra en la siguiente
figura
primero
primero
listaVacia (L)
esvacia(L)
insertar(L,x,p)
localizar(L,x)
suprimer(L,x)
anterior(L,p)
primero(L)
anula(L)
insertarPrimero(L,x)
insertarFinal(L,x)
La operación de una estructura de datos es recorrer, consiste en visitar cada nodo de la lista.
La implementación del TAD de una lista requiere, primer lugar declarar la clase nodo, en las que se
combinaran sus dos partes: el dato y un enlace (referencia). A demás la clase lista con sus
operaciones y el atributo con la cabeza de la lista. Las operaciones tendrán las siguientes
operaciones:
Inicialización o creación
Insertar un elemento en la lista
Remover elemento de una lista
Buscar elemento de una lista
Recorrer la lista
Comprobar lista vacía
Una lista enlazada se compone de nodos enlazadas por consiguiente de la declaración de la misma
seria de la siguiente manera:
primero
Una lista doble se compone de nodos enlazados por los nodos anteriores y posteriores, por
consiguiente la declaración sería de la siguiente manera:
primero
primero
primero
La clase Lista define el atributo primero, referencia a un Nodo, para acceder a los elementos de la
lista. Para construir la lista se inicializara definiendo una lista vacía, con la referencia primero debe
de apuntar a nulo.
Inicializando Lista
primero
primero=null;
nuevo
Luego, como la lista esta vacía se hace que la referencia primero apunte al nuevo nodo creado
primero
nuevo
primero=nuevo
primero
Se desea seguir ingresando un elemento más, según el algoritmo se crea el nuevo nodo
nuevo
primero
nuevo
nuevo.siguiente=primero
primero=nuevo
primero
También se puede insertar un elemento en cualquier posición de la lista, para este caso igual se
crea un nodo, se inicializa un nodo aux
aux
primero
nuevo
nuevo.siguente=aux
primero.siguiente=nuevo
aux
primero
nuevo
aux.siguente=nuevo
Otra de las operaciones dentro de una lista es buscar un elemento, para esto se utiliza una
referencia que se inicializa en primero y se busca el elemento dentro de la lista, lo que devuelve la
operación es la referencia o un valor lógico, dependiendo del requerimiento.
aux
primero
aux=primero
while(aux.dato!=datoB) && (aux.siguiente!=null)
axu=aux.siguiente
Remover un nodo dentro de una lista sería equivalente a decir eliminar un elemento e de la lista, en
consecuencia se puede implementar de varias formas, remover el primer elemento de la lista,
remover el último de la lista, remover elemento buscado, remover un elemento antes de una posición
o después de una posición, estas operaciones se implementan de acuerdo a los requerimientos. A
continuación tenemos remover por el primero.
aux
primero
primero = aux.siguiente
primero
aux.siguiente=null
Remover un elemento buscado, imaginemos que el elemento buscado esta apuntado por la
referencia aux2, se debe de trabajar con aux1 para no perder las referencias, recomienda que la
referencia primero siempre debe de apuntar al primer elemento de la lista.
aux1 Aux2
primero
aux1=aux2.siguiente
aux2=null
Package Lista;
public class Lista <Tipo> {
Nodo primero;
public Lista() {
primero=null;
}
public Lista insertar(Tipo x){
Nodo nuevo=new Nodo(x);
if (primero!=null )
nuevo.setSiguiente(primero);
primero=nuevo;
return this;
}
public String toStream(){
String salida="";
Nodo actual;
for(actual=primero; actual!=null; actual=actual.getSiguiente() )
salida=salida+actual.getDato();
return salida;
}
public Lista Eliminar(){
Nodo actual=primero;
if (primero!=null )
primero=actual.getSiguiente();
return this;
}
}
package Lista;
public class DemoLista {
public static void main(String[] args) {
Lista lc=new Lista();
lc.insertar( new Integer(4));
lc.insertar( new Integer(5));
lc.insertar( new Integer(6));
lc.insertar( new Integer(10));
System.out.println(lc.toStream());
lc.Eliminar();
System.out.println(lc.toStream());
}
}
}