Vous êtes sur la page 1sur 28

Ingeniera de Sistemas: Luz Esperanza Espitia

Tutora de Estructura de datos.

Con relacin a la Estructura


LISTA

Indicar objetos reales que se puedan


modelar con dicha estructura.
Listas de Ordenes de visitas (hospital)

Lista de aplicaciones
Lista de pacientes

Definiciones de la misma
LISTA

Una lista es una estructura de datos secuencial.

Una manera de clasificarlas es por la forma de


acceder al siguiente elemento:

- Lista densa: la propia estructura determina cul es


el siguiente elemento de la lista. Ejemplo: un array.
- Lista enlazada: la posicin del siguiente elemento
de la estructura la determina el elemento actual. Es
necesario almacenar al menos la posicin de
memoria del primer elemento. Adems es dinmica,
es decir, su tamao cambia durante la ejecucin del
programa.

Definiciones de la misma
LISTA

Las Listas son secuencias de 0 o ms elementos


de un tipo de datos almacenado en memoria. Son
estructuras lineales donde cada elemento de una
lista excepto el primero tiene un nico predecesor
y cada elemento de la lista excepto el ultimo tiene
un sucesor.
Grficamente:

TAD que modele las LISTAS.

Nombre: TAD Lista


Invariante: n/a
Operaciones:
crearLista()
*/ Devuelve un valor del tipo pila preparado para ser usado y
que contiene un valor de pila vaca. Esta operacin es la
misma que la de las listas generales.*/
Precondiciones: N=0
Pos condiciones: Lista creada

.TAD que modele las LISTAS.

insertar(crearLista, x pos)
*/ mediante este mtodo se insertan datos a la Lista ya
creada. Inserta elemento x en pos */
Precondiciones: pos != null
Pos condiciones: insertarLista completado (dato
insertado en Lista)

FIN():
*/Retorna la posicin del ltimo elemento, en otras
palabras el fin de la lista, tambin se puede considerar
con el tamao de la lista. S la lista est vaca retorna una
posicin invalida que podra ser -1. */

Precondiciones: n/A

Pos condiciones: operacin finalizada

.TAD que modele las LISTAS.


Siguiente(pos)

*/con este mtodo se Retorna pos + 1, si pos es


igual o mayor a FIN(), retorna FIN(). */

Precondiciones: pos != 0

Pos condiciones: retorna pos

anterior(pos)
*/con este mtodo se Retorna pos 1. */

Precondiciones: pos != 0

Pos condiciones: retorna pos

limpiar(pos)
*/Limpia la lista y Finaliza FIN()*/

Precondiciones: nn+1, pos = 0

Pos condiciones: Lista vacia

Relacionar el concepto de
VENTANA con el de Lista.

Una ventana es un rea visual, normalmente


de forma rectangular, que contiene algn tipo
de interfaz de usuario, mostrando la salida y
permitiendo la entrada de datos para uno de
varios procesos que se ejecutan
simultneamente.

Y un Consiste en una secuencia de nodos, en


los que se guardan campos de datos
arbitrarios y una o dos referencias (punteros)
al nodo anterior o posterior.

Relacionar el concepto de
VENTANA con el de Lista.

El principal beneficio de las listas


enlazadas respecto a
los array convencionales es que el orden
de los elementos enlazados puede ser
diferente al orden de almacenamiento en
la memoria o el disco.

La relacin es que con ambos trminos


nos referimos a manipulacin de datos
sin importar el orden de los mismos, solo
el acceso y su modificacin.

Describir las implementaciones de


Listas:

Para representar en lenguaje C esta


estructura de datos se utilizarn punteros, un
tipo de datos que suministra el lenguaje. Se
representar una lista vaca con la constante
NULL. Se puede definir la lista enlazada de
la siguiente manera:
struct lista
{
int clave;
struct lista *sig;
};

Describir las implementaciones


de Listas:

e1.- Vectores

Utilizando una estructura de datos esttica arreglo para


representar e implementar el TDA LISTAS. Asumamos que los
ELEMENTOS que contiene la LISTA son representados por el tipo
ENTERO. La cantidad de ELEMENTOS que puede contener la
LISTA tiene un mximo de n ELEMENTOS. Por lo que la
representacin formal de este tipo se define de la siguiente
manera: Tipo LISTA= arreglo [1..n] de ENTEROS; VarL : LISTA;

Describir las implementaciones


de Listas:

Implementacin Procedimiento: Operaciones bsicas


LISTA_VACA (Var L :LISTA)

var i : ENTERO;
principio
Para i := 1 hasta n hacer L[ i ]:= 0;
fin;

Funcin ES_VACA(L :LISTA) : LGICO

principio
Si L[ 1 ] = 0 entonces ES_VACA := Verdad
Sino ES_VACA := Falso;
Fin;

Describir las implementaciones


de Listas:

Procedimiento Insertar (Var L :LISTA, p:


POSICIN, e : ENTERO)

var i : ENTERO;
principio
Si L [p] <> 0 entonces mientras (i <=n) y ( L [i ] <> 0 )
hacer
principio
sig := l[p]; l[i] := e; e := sig;
fin;
l [ i ] := e;
fin;

Describir las implementaciones


de Listas:

e2.- Listas doblemente enlazadas

Una lista enlazada es una de las estructuras de


datos fundamentales, y puede ser usada para implementar
otras estructuras de datos. Consiste en una secuencia
de nodos, en los que se guardan campos de datos arbitrarios
y una o dos referencias (punteros) al nodo anterior o posterior.

El principal beneficio de las listas enlazadas respecto a


los array convencionales es que el orden de los elementos
enlazados puede ser diferente al orden de almacenamiento en
la memoria o el disco, permitiendo que el orden de recorrido
de la lista sea diferente al de almacenamiento.

Describir las implementaciones


de Listas:

Son listas que tienen un enlace con el elemento


siguiente y con el anterior. Una ventaja que tienen
es que pueden recorrerse en ambos sentidos, ya
sea para efectuar una operacin con cada elemento
o para insertar/actualizar y borrar. La otra ventaja es
que las bsquedas son algo ms rpidas puesto
que no hace falta hacer referencia al elemento
anterior. Su inconveniente es que ocupan ms
memoria por nodo que una lista simple.

Mecanismos para implementar las


listas.

En el lenguaje C se utiliza los llamados


punteros para representar esta
estructura de datos.

En java se encuentra un paquete


completo en java.util de donde se
pueden utilizar las listas, como un tipo
abstracto de datos, este tipo de
estructura de datos tambin se utiliza a
partir y/o como una interfaz.

Con

relacin a la Estructura
PILA:

Indicar objetos reales que se puedan


modelar con dicha estructura.
Memoria de una pc
Caja de objetos

Definiciones de Pila.
Una pila es un caso especial de lista en la cual
todas las inserciones y supresiones tienen lugar
en un extremo determinado llamado tope.

Definiciones de Pila.

A las pilas se les llama tambin listas LIFO (last-in


first-out) o listas primero en entrar, primero en
salir. En el TDA Pila no se definen operaciones
de posicionamiento en la pila. Esto es debido a
que todas las operaciones de acceso se realizan
en la misma posicin, el tope de la pila.

TAD que modele las PILAS.

Nombre: TAD Pila


Invariante: n<>0
Operaciones:

crearPila()
*/ Devuelve un valor del tipo pila preparado para

ser usado y que contiene un valor de pila vaca.


Esta operacin es la misma que la de las listas
generales.*/
Precondiciones: N=0
Pos condiciones: pila creada

insertarPila(crearPila)
*/ mediante este mtodo se insertan datos a la

pila ya creada. Con las pilas se usa el mtodo


push para insertar*/
Precondiciones: pila <> null
Pos condiciones: insertarPila completado
(datos insertados en pila)

borrarPila()

*/con este mtodo se elmina cierta pila de datos


*/
Precondiciones: pila <> null
Pos condiciones: pila eliminada

Con

relacin a la Estructura
COLA:

Varias definiciones Cola.

Una cola es una estructura de datos, caracterizada


por ser una secuencia de elementos en la que la
operacin de insercin push se realiza por un
extremo y la operacin de extraccin pop por el otro.
Tambin se le llama estructura FIFO (del ingls First
In First Out), debido a que el primer elemento en
entrar ser tambin el primero en salir.

Una cola es tambin una estructura de datos lineal


en donde las eliminaciones se realizan por uno de
sus extremos que normalmente se llama frente, y las
inserciones se realizan por el otro extremo que
normalmente se llama final. A estas estructuras se
les llama FIFO (First In First Out).

TAD que modele las COLAS.

Nombre: TAD COLA


Invariante: n/a
Operaciones:

crearCola()
*/ Devuelve un valor del tipo cola preparado

para ser usado y que contiene un valor de pila


vaca. Esta operacin es la misma que la de las
listas generales.*/
Precondiciones: N=0
Pos condiciones: cola vacia creada

insertarCola(crearCola)
*/ mediante este mtodo se insertan datos a

la cola ya creada. */
Precondiciones: cola <> null
Pos condiciones: datos insertados en
cola, cola insertada.

borrarCola()

*/con este mtodo se elimina cierta cola de


datos */
Precondiciones: cola != 0
Pos condiciones: cola eliminada

Particularidades de un TAD COLA


con prioridades.

Se introduce una forma de simular genericidad en


los TADs de Modula-2 mediante el uso del TAD
ITEM.

En una cola de prioridad los elementos estn


ordenados dependiendo de su prioridad, de manera
que est disponible (para las operaciones Frente y
Extraer) el elemento de mxima prioridad. En caso
de igualdad se sigue la regla FIFO, de dos
elementos con igual prioridad sale primero el que
primero entr. Esto se puede conseguir bien
insertando ordenadamente y extrayendo el primer
elemento, bien Dpto.

Implementaciones de COLAS con


vectores circulares

public class Cola {

private static int max = 100;


private Object elementos[];
private int frente, post;
// fin clase Cola

Gracias

por su
Atencin!!