Académique Documents
Professionnel Documents
Culture Documents
EL TAD LISTA
Concepto
Una lista puede definirse como una n-tupla dinmica ordenada: L = (e1, e2, ., en) Tipos: -Listas homogneas -Listas heterogneas.
UNSAAC - Area de Algortmica 2
Representacin de listas
Representacin convencional Utiliza nodos constituidos por dos partes: la primera almacena la informacin y la segunda parte es un puntero que almacena la direccin del siguiente elemento:
Parte de la informacin Direccin del sgte. elemento
Las listas en consecuencia son una secuencia de nodos enlazados. Ej. Lista de ciudades:
Cusco Puno Ica Tacna n
Una representacin ms general es utilizar nodos donde sus dos componentes son punteros:
Parte de la informacin Direccin del sgte. elemento
Cusco
Puno
Ica
Tacna
casa
house
rojo
red
zorro
fox
n
UNSAAC - Area de Algortmica 6
Representacin recursiva
La definicin recursiva de una lista es:
Lista n elementos = Primer elemento + Lista n -1 elementos
Grficamente tenemos:
Lista de 4 elementos Lista de 3 elementos Lista de 2 elementos Lista de 1 elemento
Cusco
Puno
Ica
Tacna
nulo
Especificacin del TAD Lista Elementos: Lista = (elemento, sub lista) ^ elemento Objeto ^ sub lista Lista Donde: Objeto es una clase. Representa a cualquier objeto del mundo real. sub lista es tambin de la clase Lista
UNSAAC - Area de Algortmica 9
Operaciones Operaciones primitivas Lista: Lista: Objeto x Lista ModificarElemento: Objeto x Lista ModificarSubLista: Lista x Lista Elemento: Lista SubLista: Lista EsVacia Lista
10
Operaciones derivadas Insertar: Objeto x Entero x Lista Ubicacion: Objeto x Lista Iesimo: Entero x Lista Eliminar: Entero x Lista Longitud: Lista
11
Axiomas Definicin de variables: e : Objeto lista : Lista k : Entero k = Ubicacion(e,Insertar(e,k,lista)) e = Iesimo(k,Insertar(e,k,lista)) lista = Eliminar(k,Insertar(e,k,lista)) lista = Eliminar(Ubicacin(Ica,Lista(ca,lista)),lista) 0 = Longitud(Lista())
UNSAAC - Area de Algortmica 12
Especificacin del algoritmo Diccionario de Variables Resultados lista = Lista con elemento insertado en la ubicacin i Datos e = elemento : Objeto i = ubicacin en la que se debe insertar : Entero lista = Lista de elementos : Lista Pre condicin {| 1 <= i <= longitud(lista)+1 |} Accin que debe realizar el algoritmo Insertar un elemento en una lista Pos condicin {| lista = lista con e en la ubicacin i |}
14
Operacin Ubicacion
Nombre operacin: Ubicacion Descripcin operacional: Ubicacion: Objeto x Lista Entero Explicacin de la operacin: Determina la ubicacin en la que se encuentra un elemento en la lista. Si el elemento no esta en la lista, devuelve CERO Modelo:
si no EsVacia(lista) si e<>Elemento(lista)15
Especificacin del algoritmo Diccionario de Variables Resultados lista = Lista con elemento insertado en la ubicacin i Datos e = elemento : Objeto i = ubicacin en la que se debe insertar : Entero lista = Lista de elementos : Lista Pre condicin {| 1 <= i <= Longitud(lista)+1 |} Accin que debe realizar el algoritmo Insertar un elemento en una lista Pos condicin {| lista = lista con e en la ubicacin i |}
16
Operacin Iesimo
Nombre operacin: Isimo Descripcin operacional: Entero x Lista Objeto Explicacin de la operacin: Determina el i simo elemento de la lista Modelo: Caso Base Elemento(lista) Iesimo(i,lista) = Caso Recurrente Iesimo(i-1,SubLista(lista)) si i > 1
si i = 1
17
Especificacin del algoritmo Diccionario de Variables Resultados iesimo = elemento iesimo de la lista : Objeto Datos i = ubicacin del elemento : Entero lista = Lista de elementos : Lista Pre condicin {| 1 <= i <= longitud(lista) |} Accin que debe realizar el algoritmo Determinar el elemento de la iesima ubicacin Pos condicin {| e = iesimo elemento de la lista |}
18
Operacin Eliminar
Nombre operacin: Eliminar Descripcin operacional: Entero x Lista Lista Explicacin de la operacin: Elimina el i simo elemento de la lista Modelo: Caso Base lista = subLista (lista) Eliminar(i,lista) = Caso Recurrente Eliminar(i -1,SubLista(lista))
si i = 1
si
i>1
19
Especificacin del algoritmo Diccionario de Variables Resultados lista = Lista sin el iesimo elemento : Lista Datos i = ubicacin del elemento a eliminar : Entero lista = Lista de elementos : Lista Pre condicin {| 1 <= i <= longitud(lista)|} Accin que debe realizar el algoritmo Eliminar el elemento de la iesima ubicacin Pos condicin {| lista sin el iesimo elemento |}
20
Operacin Longitud
Nombre operacin: Longitud Descripcin operacional: Lista Entero Explicacin de la operacin: Determina el nmero de elementos de la lista
Modelo: Caso Base 0 Longitud(lista) = Caso Recurrente 1 + Longitud(subLista(lista)) si no EsVacia(lista) si EsVacia(lista)
21
Diccionario de Variables Resultados longitud = nmero de elementos de la lista : Entero Datos lista = Lista de elementos : Lista Pre condicin {| verdadero |} Accin que debe realizar el algoritmo Determinar el nmero de elementos de una lista Pos condicin {| longitud = nmero de elementos de la lista |}
22
// ----------------- Propiedades ----------------------public Object elemento { get { return aElemento; } set { aElemento=value;} } // ----------------------------------------------------------public CLista subLista { get { return aSubLista; } set { aSubLista=value; } }
UNSAAC - Area de Algortmica 24
// ------------ Otros mtodos ---------------------------------------------// ---------- Operacion EstaVacia -------------------------------------------public bool EstaVacia() { return ((aElemento==null) && (aSubLista==null)); } // ---------- Operacion Longitud -------------------------------------------public int Longitud() { if (EstaVacia()) return 0; else return 1 + aSubLista.Longitud(); }
25
// ---------- Operacion Iesimo -------------------------------------------protected Object iesimo(int posicion) { if (posicion==1) return aElemento; else return aSubLista.iesimo(posicion-1); } // -------------------------------------------------------------------------------------public virtual Object Iesimo(int posicion) { //validar la posicion if (1<=posicion && posicion <= Longitud()) return iesimo(posicion); else { // la posicin no es correcta Console.WriteLine("ERROR: Posicin incorrecta"); return null; } }
UNSAAC - Area de Algortmica
26
// ---------- Operacin Eliminar ----------------------------------------protected void eliminar(int posicion) { if (posicion==1) { // quitar el elemento actual aElemento=aSubLista.elemento; aSubLista=aSubLista.subLista; } else // eliminar en la sublista aSubLista.eliminar(posicion-1); } // ----------------------------------------------------------------------------------public virtual void Eliminar(int posicion) { // validar la posicion if (1<=posicion && posicion <= Longitud()) eliminar(posicion); else Console.WriteLine("ERROR: Posicin incorrecta"); }
UNSAAC - Area de Algortmica 27
//------------ Operacin mostrar ---------------------public void Mostrar() { //-- muestra el elemento y el resto de la lista if (!(EstaVacia())) { Console.WriteLine(aElemento); aSubLista.Mostrar(); } } } //--- fin de la clase
28
Esta es una aplicacin que requiere de una lista. Cada elemento en la lista ser un objeto que a su vez tendr dos elementos: Palabra en quechua y palabra en espaol, una es el significado de la otra. La aplicacin debe mostrar inicialmente un men con las siguientes opciones: Diccionario Quechua Espaol 1.- Quechua Espaol 2.- Espaol Quechua 3.- Listar 4.- Salir
UNSAAC - Area de Algortmica 30
Operaciones Operaciones primitivas QuechuaEspanol: QuechuaEspanol QuechuaEspanol: Texto x Texto QuechuaEspanol modificarQuechua: Texto x QuechuaEspanol QuechuaEspanol modificarEspanol: Texto x QuechuaEspanol QuechuaEspanol quechua: QuechuaEspanol Texto espanol: QuechuaEspanol Texto Axiomas Las operaciones de este TAD son bsicas, y estn constituidas por constructores, modificadores y selectores; por tanto no es necesario especificar axiomas. Descripcin de las operaciones Por la misma razn por la que no se especific axiomas, no se describirn las operaciones
UNSAAC - Area de Algortmica 32
// ============== Propiedades ============== public String Quechua { set { aQuechua = value;} get { return aQuechua; } } // -----------------------------------------------------------------public String Espanol { set { aEspanol = value;} get { return aEspanol; } }
UNSAAC - Area de Algortmica 34
public overrides String ToString() { return aQuechua+: "+aEspanol; } /* ------------------------------------------------------------------- */ public overrides bool Equals(Object obj) { //-- verificar si es una cadena if (obj is String) return aQuechua.Equals(obj); else //-- verificar si es una palabra del diccionario if (obj is CQuechuaEspanol) { String texto = ((CQuechuaEspanol)obj).ToString(); return ToString().Equals(texto); } else return false; } UNSAAC - Area de Algortmica }
35