Está en la página 1de 51

Listas Dinmicas

Listas

Listas Arrays
Listas

son flexibles y permiten cambio de implementacin Borrar, Modificar, etc.

Operaciones
Insertar,

Tipos de listas
Simples
Ordenadas Pilas

Colas
Doblemente Circulares

enlazadas (LDE)
2

TAD Lista Simple: operaciones


Creacin de una lista Comprobacin del estado
crearLista (nombreLista) listaLlena (nombreLista) Booleano listaVacia(nombreLista) Booleano listaVacia (referenciaNodo) Booleano Insertar (nombreLista, valorInfo, posicion) Insertar (nombreLista, valorInfo) Borrar (nombreLista, valorInfo) Buscar (nombreLista, dato) informacion Buscar (nombreLista, dato) referenciaNodo Pertenece (nombreLista,informacion) Booleano recorrer(nombreLista) Info (referenciaNodo) Informacion Siguiente (referenciaNodo) enlace asignarInfo (referenciaNodo, valorInformacion) asignarEnlace (referenciaNodo, valorEnlace)

Insercin de nodos Borrado de nodos Bsqueda de un nodo

Recorrido de la lista Acceso a los nodos Modificacin de los nodos

Definicin de la lista

Se compone de nodos enlazados. Se debe hacer en una clase separada. Slo requiere conocer dnde se encuentra el primer nodo de la lista. Para el nombre de la referencia al primer nodo se hace uso de la metfora: cabeza de la lista o inicio. Una lista vaca comenzara con un valor null en el campo sig (siguiente)

Qu es un Nodo?

Un nodo es un registro con varios campos: unos campos de datos y un campo apuntador. Los primeros son informacin y el ltimo es una referencia al siguiente nodo de la lista. El ltimo nodo de la lista contiene una referencia siguiente "null".

Clase nodo
public class Nodo { int data; // almacena el dato Nodo sig; //liga al prximo nodo }
El campo data representa los datos que almacena el nodo. Puede ser de diferentes tipos de datos, adems que ste puede contener la cantidad de datos que se ocupen.
6

Listas

sig

sig

sig

Creacin de una lista

Lista vaca

Insercin de un nodo
CASO 1. Insercin al principio de la lista

Caso 1.

Insercin al principio

Insertarinicio (inicio, info) //este algoritmo inserta un nodo al inicio de la lista// (nuevo: del tipo inicio) 1- crear (nuevo); 2- hacer nuevo.dato = info nuevo.sig = inicio inicio = nuevo
10

Caso 2.

Insercin en medio de la lista

Caso 2.1 Insertar antes de

Caso 2.2 Insertar despus de

inicio

aux
Ref

nuevo

info
11

Caso 2.1

Insertar antes de

InsertAntes (inicio, info, ref) //aux,nuevo,T son variables de tipo inicio. OK es una variable boolean 1- hacer aux = inicio, Ok = verdadero 2- mientras (aux.dato != ref) y (Ok == verdadero) Si aux.sig != null T = aux, aux = aux.sig. Sino OK = falso 3- Si Ok = = verdadero //se encontr el dato Crear (nuevo) nuevo.dato = info nuevo.sig =aux Si aux = = inicio //es el primer nodo entonces inicio = nuevo si no T.sig = nuevo

12

Caso 2.2

InsertDespues

InsertDespues (inicio, info, Ref) //nuevo y aux so n variables del tipo de inicio, OK es boolean 1- aux = inicio, OK = verdadero 2- Mientras (aux.dato != ref) y (OK == verdadero) hacer si aux.sig != null entonces aux = aux.sig si no OK = Falso 3- Si OK = = verdadero entonces crear (nuevo) nuevo.dato = info nuevo.sig = aux.sig aux.sig = nuevo
13

Caso 3. Insercin al final de la lista

Insertafinal (inicio, info) // nuevo y T son del tipo inicio


1- Hacer T = inicio 2- mientras T.sig != null recorrer la lista hasta llegar al final 3- Crear (nuevo) 4- nuevo.dato = info nuevo.sig = null T.sig = nuevo
14

Eliminar Nodos
Casos 1 Eliminar el primer nodo

Elimina primero (inicio)


// Se redefine el apuntador inicio. //aux es del tipo inicio

1- hacer Q = inicio; 2- Si aux.sig != null


//que si hay mas de un elemento

inicio = aux.sig Sino inicio = null 3- aux = null //quita aux

Entonces

15

Caso 2 Eliminar en medio


Caso 2.1 Elimina nodo con X informacin
EliminaNodoX (inicio, x) //aux y T son variables del mismo tipo de inicio, Ok es boolean 1- Hacer aux = inicio , Ok = verdadero 2- Repetir mientras (aux.dato != x) y (Ok) hacer Si aux.sig != null //hay ms nodos entonces T = aux, aux = aux.sig si no Ok = falso 3- Si Ok == falso entonces //el elemento x no existe si no si inicio == aux //x es el primer elemento de la lista entonces inicio = aux.sig si no T.sig = aux.sig aux = null

16

Caso 2.2 Elimina nodo antes de X informacin


inicio
R T

aux
X

Algoritmo EliminaAntesX (inicio, x) //aux , T y R son variables del mismo tipo de inicio (apuntador), Ok es boolean 1- Si inicio.dato == x entonces //no hay nodo que precede a x sino aux = inicio; T = inicio; Ok = falso; mientras (( aux.info!=x) y (!Ok)) si aux.sig != null entonces R = T; T = aux; aux= aux.sig; si no Ok = verdadero; 2- Si Ok entonces //el elemento x no existe si no si inicio.sig = aux //el elemento a eliminar es el primero entonces inicio = aux sino R.sig = aux; T = null;

17

Caso 3 Elimina ultimo nodo

Elimina ultimo (inicio) //Se pone un null en el campo sig del penltimo elemento y se quita el ultimo. //aux, T son del mimo tipo que inicio 1. Si inicio.sig == null //que la lista tiene un solo elemento Entonces inicio = null //quita (inicio) Si no aux = inicio 2. Mientras aux.sig != null hacer T = aux aux = aux.sig 3. T.sig = null //quita T aux = null //quita aux 18

Recorrido de una lista dinmica


Metodo Correlista (Nodo inicio); //imprime cada dato de la lista { nodo aux = new nodo(); aux = inicio; while (aux.sig != null) { escribir (aux.dato); aux = aux.sig; } }
19

Buscar un nodo con alguna caracterstica


Mtodo Busca (Nodo inicio, info){ //Devuelve exito con falso o verdadero nodo aux = new nodo(); boolean exito = falso aux = inicio; while (aux.sig != null && aux.dato != info) aux = aux.sig; if ( aux.dato = = info ) exito = verdadero; return exito }
20

Filas Dinmicas
21

Caractersticas de una Fila


El primer elemento en llegar es el primero en servir (FIFO Frist In Frist Out). El ultimo en llegar se agrega al final El apuntador posee la direccin del siguiente nodo El apuntador puede ser null o puede apuntar al siguiente nodo Esta estructura se utiliza en : Simulaciones Sistemas operativos etc

22

dato sig

dato sig

dato sig

dato sig

Operaciones de una Fila

Crearfila (nodo inicio) Agregarfila (nodo inicio, int dato) QuitarFila (nodo inicio) Vacio (nodo inicio)

23

Clase nodo
public class Nodo { int dato; // almacena el dato Nodo sig; //liga al prximo nodo }
El campo data representa los datos que almacena el nodo. Puede ser de diferentes tipos de datos, adems que ste puede contener la cantidad de datos que se ocupen.
24

Crea fila
creaFila (nodo i){ nodo inicio = new nodo(); inicio = i; }
incio sig

25

Agregar a una Fila un nodo


Agrega(nodo inicio, int dato){ Si inicio.sig = null entonces inicio.sig = nuevo; Sino { nodo p = nuevo nodo(); p.sig = inicio.sig mientas(p.sig!= null) p = p.sig;} }
incio sig dato sig null
26

Eliminar un elemento de la Fila


int quitar(nodo inicio){ int d = -1; Si inicio.sig == null; regresa d; Sino { d = inicio.sig.dato; inicio.sig = inicio.sis.sig; } Regresa d; }
incio sig dato sig dato sig

null

dato sig
27

Vaciar una fila


Boolean vacia(nodo inicio){
Boolean vacia = false; Si inicio = null Regresa true

Sino
Regresa vacia

}
incio sig

null dato sig dato sig dato sig


28

Pilas Dinmicas
29

Caractersticas

Se remueve del tope y se agrega en el tope de la pila (LIFO Last In Frist Out).

Operaciones
Creapila (nodo inicio) Quitar (nodo inicio) = pop Agregar (nodo inicio, int dato) = push Vacia (nodo inicio)
30

Crear una Pila


creaPila (nodo i){ Nodo inicio = new nodo(); inicio = i }
incio sig null

31

Agregar un nodo a la Pila (push)


agregaNodo (nodo inicio, int dato){
nodo nuevo = new nodo() nuevo.dato = info nuevo.sig = inicio.sig; inicio.sig = nuevo

}
nuevo incio sig dato sig dato sig dato sig null
32

Quitar elemento de la Pila (pop)


int pop (nodo inicio){ int d = -1; Si inicio.sig == null; regresa d; Sino { d = inicio.sig.dato; inicio.sig = inicio.sis.sig; } Regresa d; }
incio sig dato sig dato sig dato sig
33

Para verificar si un apila esta vaca


Boolean vacia(nodo inicio){
Boolean vacia = false; Si inicio != null Regresa true

Sino
Regresa vacia

}
incio sig dato sig dato sig dato sig
34

Lista doblemente enlazada

35

Nodo
public class Nodo { private int data; // al macena el dato private Nodo sig; //liga al prximo nodo private Nodo ant; // liga al anterior nodo }
ant
sig

36

Operaciones de una lista doblemente enlazada


Aadir o insertar elementos. Buscar elementos. Borrar elementos. Moverse a travs de la lista, siguiente y anterior.

sig ant

Inicio

fin
37

Aadir elemento a una lista vaca

1-nodo = anterior y nodo=siguiente a NULL.

38

Insertar nuevo nodo


Caso 1 Insertar nodo en la primera posicin
Nuevo nodo

insertaNodo( nodo) 1-. Nodo=siguiente // debe apuntar a Lista. 2-. Nodo=anterior y Lista=anterior. 3-. Lista=anterior //debe apuntar a nodo.
null 1 2 Dato 3
39

Dato

Dato

Caso 2 Insertar un elemento en la ltima posicin

InsertarUltimo(nodo) 1-. Nodo=siguiente y Lista=siguiente (NULL). 2-. Lista=siguiente // debe apuntar a nodo. 3-. Nodo=anterior //apuntar a Lista.
2 Dato Dato Dato 1 3 Dato null
40

Caso 3 Insertar un nodo en medio.

InsertarMedio (nodo ) 1-. Nodo=siguiente apunte a lista=siguiente. 2-. Lista=siguiente //apunte a nodo. 3-. Nodo=anterior //apunte a lista. 4-. Nodo=siguiente=anterior // apunte a nodo.
Dato Dato 3 2 Dato 4 Dato 1
41

null

Eliminar
Caso 1 Eliminar el nico nodo
En este caso, ese nodo ser el apuntado por Lista.

1-. Eliminamos el nodo.


2-. Hacemos que Lista apunte a NULL.

42

Caso 2
Caso 2.1Eliminar el primer nodo

eliminaPrimer( nodo) 1-. Si nodo apunta a Lista // hacemos que Lista apunt Lista=siguiente. 2-. Hacemos que nodo=siguiente=anterior// apunte a NULL 3-. Borramos el nodo apuntado por nodo.

43

Caso 2.2 Eliminar un nodo intermedio

eliminaMedio(nodo) 1-. Si nodo apunta a Lista Lista=siguiente 2-. nodo= siguiente 3-. Nodo = anterior 4-. Borramos el nodo apuntado por nodo

44

Caso 3 Eliminar el ltimo nodo

eliminaUltimo(nodo) 1-. Si nodo apunta a Lista Lista=anterior. 2-nodo=anterior=siguiente apunte a NULL 3-. Borramos el nodo apuntado por nodo.

45

Lista Circular
46

Circular

Una lista circular es una lista lineal en la que el ltimo nodo a punta al primero.

inicio

fin

47

Operaciones de una lista circular


las operaciones que se pueden realizar sobre las listas circulares :
Aadir

o insertar elementos. Buscar o localizar elementos. Borrar elementos. Moverse a travs de la lista

48

Insertar un elemento
Insertar elemento en la lista vaca

lista apunta a nodo. lista->siguiente apunte a nodo.

Insertar elemento en una lista no vaca


1. 2.

Hacemos que nodo = siguiente apunte a lista = siguiente. Despus que lista = siguiente apunte a nodo.

49

Eliminar un elemento de la lista

Eliminar el nico nodo de la lista.


1. 2. 3.

lista = siguiente mientras lista = siguiente sea distinto de nodo. Hacemos que lista = siguiente apunte a nodo = siguiente. Eliminamos el nodo.

Eliminar un nodo en una lista circular con ms de un elemento


1. 2.

Borramos el nodo apuntado por lista. Hacemos que lista valga NULL.
50

Eliminar un elemento de la lista

Caso general
1. 2. 3. 4.

Copiamos el contenido del nodo = siguiente sobre el contenido de nodo. Hacemos que nodo = siguiente apunte a nodo = siguiente = siguiente. Eliminamos nodo = siguiente. Si lista es el nodo = siguiente, hacemos lista = nodo.

51

También podría gustarte

  • Buying Things
    Buying Things
    Documento1 página
    Buying Things
    José Díaz Centeno
    Aún no hay calificaciones
  • TESIS Berlingeri
    TESIS Berlingeri
    Documento568 páginas
    TESIS Berlingeri
    elreypablo
    Aún no hay calificaciones
  • Clase Fresado 34270
    Clase Fresado 34270
    Documento34 páginas
    Clase Fresado 34270
    José Díaz Centeno
    Aún no hay calificaciones
  • Acces para Auto
    Acces para Auto
    Documento9 páginas
    Acces para Auto
    José Díaz Centeno
    0% (1)
  • Pbi Peru Actividades 1
    Pbi Peru Actividades 1
    Documento14 páginas
    Pbi Peru Actividades 1
    José Díaz Centeno
    Aún no hay calificaciones
  • G M-Final
    G M-Final
    Documento35 páginas
    G M-Final
    José Díaz Centeno
    Aún no hay calificaciones
  • Diagrama VSM
    Diagrama VSM
    Documento1 página
    Diagrama VSM
    José Díaz Centeno
    Aún no hay calificaciones
  • Question Forms
    Question Forms
    Documento2 páginas
    Question Forms
    José Díaz Centeno
    Aún no hay calificaciones
  • Orga 1ro
    Orga 1ro
    Documento3 páginas
    Orga 1ro
    José Díaz Centeno
    Aún no hay calificaciones
  • Expo PCP
    Expo PCP
    Documento13 páginas
    Expo PCP
    José Díaz Centeno
    Aún no hay calificaciones
  • Desing Thinking 34103
    Desing Thinking 34103
    Documento94 páginas
    Desing Thinking 34103
    José Díaz Centeno
    Aún no hay calificaciones
  • Sistema Produccion Jit
    Sistema Produccion Jit
    Documento7 páginas
    Sistema Produccion Jit
    José Díaz Centeno
    Aún no hay calificaciones
  • Diccionario de Diagnostico
    Diccionario de Diagnostico
    Documento11 páginas
    Diccionario de Diagnostico
    José Díaz Centeno
    Aún no hay calificaciones
  • Teoria de KEYNES Macroeconomia
    Teoria de KEYNES Macroeconomia
    Documento20 páginas
    Teoria de KEYNES Macroeconomia
    Freddy Montalvo Agüero
    Aún no hay calificaciones
  • Con Quien Compite La Empresa 34103
    Con Quien Compite La Empresa 34103
    Documento51 páginas
    Con Quien Compite La Empresa 34103
    José Díaz Centeno
    Aún no hay calificaciones
  • Las Cuentas Nacionales 38285
    Las Cuentas Nacionales 38285
    Documento15 páginas
    Las Cuentas Nacionales 38285
    José Díaz Centeno
    Aún no hay calificaciones
  • Elaboración de Hojuelas de Maíz Con
    Elaboración de Hojuelas de Maíz Con
    Documento5 páginas
    Elaboración de Hojuelas de Maíz Con
    José Díaz Centeno
    Aún no hay calificaciones
  • Globalización
    Globalización
    Documento2 páginas
    Globalización
    José Díaz Centeno
    Aún no hay calificaciones
  • Las Cuentas Nacionales 38285
    Las Cuentas Nacionales 38285
    Documento15 páginas
    Las Cuentas Nacionales 38285
    José Díaz Centeno
    Aún no hay calificaciones
  • Termoformado
    Termoformado
    Documento16 páginas
    Termoformado
    José Díaz Centeno
    Aún no hay calificaciones
  • Trabajo de Org
    Trabajo de Org
    Documento6 páginas
    Trabajo de Org
    José Díaz Centeno
    Aún no hay calificaciones
  • Normas Apa 6 Edición
    Normas Apa 6 Edición
    Documento14 páginas
    Normas Apa 6 Edición
    Leidy Castrillón
    Aún no hay calificaciones
  • Fresa Do
    Fresa Do
    Documento11 páginas
    Fresa Do
    José Díaz Centeno
    Aún no hay calificaciones
  • Formato 7.1
    Formato 7.1
    Documento10 páginas
    Formato 7.1
    José Díaz Centeno
    Aún no hay calificaciones
  • Formato 4 34081
    Formato 4 34081
    Documento12 páginas
    Formato 4 34081
    José Díaz Centeno
    Aún no hay calificaciones
  • Prograli
    Prograli
    Documento5 páginas
    Prograli
    José Díaz Centeno
    Aún no hay calificaciones
  • Tarea de Inv.
    Tarea de Inv.
    Documento2 páginas
    Tarea de Inv.
    José Díaz Centeno
    Aún no hay calificaciones
  • Formato 7.1 34081
    Formato 7.1 34081
    Documento3 páginas
    Formato 7.1 34081
    José Díaz Centeno
    Aún no hay calificaciones
  • Formato 7.1 34081
    Formato 7.1 34081
    Documento3 páginas
    Formato 7.1 34081
    José Díaz Centeno
    Aún no hay calificaciones
  • Ejercicio de Analisis Estadistico-Proyectos
    Ejercicio de Analisis Estadistico-Proyectos
    Documento2 páginas
    Ejercicio de Analisis Estadistico-Proyectos
    José Díaz Centeno
    Aún no hay calificaciones