Вы находитесь на странице: 1из 23

ESTRUCTURA DE DATOS

Viela Reyes 11-0879

Lista

INDICAR OBJETOS REALES QUE SE PUEDAN MODELAR CON DICHA ESTRUCTURA.

Lista de la compra del supermercado Lista de tareas u obligaciones que hacer Lista de invitados

PRESENTAR VARIAS DEFINICIONES DE LA MISMA.


Es una lista de datos homognea y dinmica, que se va a estar formada por una secuencia de elementos, donde cada uno de ellos va a ser seguido uno por el otro.

La lista enlazada es un TDA que nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinmica, por lo que no tenemos que saber "a priori" los elementos que puede contener.
Operaciones bsicas:

Visualizar su contenido.
Buscar la posicin de la primera ocurrencia de un elemento. Insertar y Eliminar un elemento en alguna posicin. Buscar_k_esimo, que devuelve el elemento

de la posicin indicada
Algoritmos

PROPONER UN TAD QUE MODELE LAS LISTAS

Crear la lista vaca constructor crearLista; primero:= nulo; ultimo:= nulo; num:= 0; fconstructor

Aadir un elemento por la derecha accin aadeDch (e: elemento); var nuevo: ptrNodo fvar si esVaca entonces creaUnitaria (e) sino reservar (nuevo, creaNodo(e, nulo)); ltimo^.setSig(nuevo); ltimo:= nuevo; num:= num + 1; fsi faccin

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. Las ventanas se asocian a interfaces grficas, donde pueden ser manipuladas con un puntero. En relacin con las listas estas se pueden organizar en manera ordenada y adems las ventanas poseen caracterstica homogneas al momento de su desarrollo. Adems aqu vemos cuales atributos y operaciones ha de realizar.

Implementacin de listas a base de vectores

Tiene que declararse el tamao de la lista. Exige sobrevaloracion. Consume mucho espacio. Complejidad computacional de las operaciones: Buscar_k_esimo, tiempo constante Visualizar y Buscar, tiempo lineal. Insertar y Eliminar son costosas. Insertar o eliminar un elemento exige, en promedio, desplazar la mitad de los valores, O(n). La construccin de una lista o la eliminacin de todos sus elementos podra exigir un tiempo cuadrtico.

DESCRIBIR LOS MECANISMOS MEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIN PERMITEN IMPLEMENTAR LAS LISTAS.

Implementacin

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 CMO LOS LENGUAJES QUE NO MANEJAN APUNTADORES SIMULAN LAS LISTAS DOBLEMENTE ENLAZADAS.

Cada nodo apunta al siguiente y al anterior. Duplica el uso de la memoria necesaria para los punteros. Duplica el coste de manejo de punteros al insertar y eliminar. La eliminacin se simplifica. No es necesario buscar el elemento anterior.

PILA

INDICAR OBJETOS REALES QUE SE PUEDAN MODELAR CON DICHA


ESTRUCTURA

Siempre que se hacen implementacin fsicas que se encuentren mas cerca de la forma mas fcil para la ejecucin del mismo por ejemplo: Cuando se montan y desmontan cajas de un camin. Romper filas para salida si se encuentran mas cerca de la salida, entonces el ultimo sale primero al voltear la posiciones en la lnea.

PRESENTAR VARIAS DEFINICIONES DE LA MISMA.


Una pila (stack o pushdown en ingls) es una lista de elementos de la cual slo se puede extraer el ltimo elemento insertado. La posicin en donde se encuentra dicho elemento se denomina tope de la pila. Tambin se conoce a las pilas como listas LIFO (LAST IN - FIRST OUT: el ltimo que entra es el primero que sale). Operaciones bsicas: apilar, desapilar y cima. Una pila es un tipo especial de lista abierta en la que slo se pueden insertar y eliminar nodos en uno de los extremos de la lista. Estas operaciones se conocen como "push" y "pop", respectivamente "empujar" y "tirar". Adems, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo ledo.

PROPONER UN TAD QUE MODELE LAS PILAS.


Constructores:
TAD PILA <ELEMENTO> I Solo se permite agregar o quitar un elemento al nal de la lista: tope. I Las bandejas limpias del comedor de la facultad forman una pila. I Listas LIFO (Last In First Out), porque el ultimo elemento en ingresar a la pila es el primero en salir de esta.

PILA pilaVacia() apilar(ENTSAL PILA lapila, ENT ELEMENTO elem) Observadores basicos: booleano vacia(PILA lapila) ELEMENTO tope(PILA lapila)

Precondicion: : vacia(lapila).
Otras operaciones: entero tamao(PILA lapila) desapilar(ENTSAL PILA lapila)

Precondicion: : vacia(lapila).

DESCRIBIR

LOS MECANISMOS MEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIN

PERMITEN IMPLEMENTAR LAS PILAS A TRAVS DE LISTAS Y VECTORES

Declaraciones de tipos para manejar pilas en C

Los tipos que definiremos normalmente para manejar pilas sern casi los mismos que para manejar listas, tan slo cambiaremos algunos nombres:

typedef struct _nodo \{ int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila;

COLA

INDICAR OBJETOS REALES QUE SE PUEDAN MODELAR CON DICHA


ESTRUCTURA

Las filas de los bancos Las filas de las escuelas Cola de impresin

PRESENTAR VARIAS DEFINICIONES DE LA MISMA.


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.

PROPONER UN TAD QUE MODELE LAS COLAS.


El TAD Cola se define por las siguientes operaciones: __init__ Iniciar una nueva cola vaca. insertar Aadir un nuevo elemento a la cola. eliminar Eliminar y devolver un elemento a la cola. El elemento que se devuelve es el primero que se ha aadido estaVacio Comprobar si la cola est vaca.

TAD COLA <ELEMENTO>


Constructores: COLA colaVacia() encolar(ENTSAL COLA lacola, ENT ELEMENTO elem)

Observadores basicos:
booleano vacia(COLA lacola) ELEMENTO comienzo(COLA lacola) Precondicion: : vacia(lacola). Otras operaciones: entero tama~no(COLA lacola) desencolar(ENTSAL COLA lacola) Precondicion: : vacia(lacola).

DESCRIBIR LAS PARTICULARIDADES DE UN TAD COLA CON


PRIORIDADES

Cola de prioridad El TAD Cola de Prioridad tiene la misma interfaz que el TAD Cola pero distinta semntica. De nuevo, la interfaz es: __init__ Iniciar una nueva cola vaca. insertar Aadir un nuevo elemento a la cola. eliminar Eliminar y devolver un elemento a la cola. El elemento devuelto es el que tiene la prioridad ms alta. estaVacio Comprobar si la cola est vaca.

La diferencia semntica est en que el elemento eliminado de la lista no es, necesariamente, el primero que fue aadido. Ms bien, es el elemento de la cola que tiene la prioridad ms alta. En la implementacin de la Cola de Prioridad no se especifica ni qu son las prioridades ni cmo se comparan entre ellas. Depende de los elementos que haya en la cola. Por ejemplo, si los elementos de la cola tienen nombres, podemos elegirlos en orden alfabtico. Si son puntuaciones de bolos, podemos ir desde la ms alta hasta la ms baja, pero si son puntuaciones de golf, iramos desde la ms baja hasta la ms alta. Mientras podamos comparar los elementos de la cola, podremos encontrar y eliminar el de mayor prioridad. Esta implementacin de Cola de Prioridad tiene como atributo una lista de Python que contiene los elementos de la cola. class ColaDePrioridad: def __init__(self): self.elementos = [] def estaVacio(self): return self.elementos == [] def insertar(self, elemento): self.elementos.agregar(elemento)

DESCRIBIR LAS IMPLEMENTACIONES DE COLAS CON VECTORES CIRCULARES.

Вам также может понравиться