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 homogénea y dinámica, 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 dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener. Operaciones   básicas : Visualizar  su   contenido . Buscar la  posición  de la primera ocurrencia de un elemento. Insertar y Eliminar un elemento en alguna posición. Buscar_k_esimo, que devuelve el elemento de la posición indicada Algoritmos
  PROPONER UN TAD QUE MODELE LAS LISTAS  Añadir un elemento por la derecha acción añadeDch (e: elemento); var nuevo: ptrNodo fvar si esVacía entonces creaUnitaria (e) sino reservar (nuevo, creaNodo(e, nulo)); último^.setSig(nuevo); último:= nuevo; num:= num + 1; fsi facción Crear la lista vacía constructor crearLista; primero:= nulo; ultimo:= nulo; num:= 0; fconstructor
RELACIONAR EL CONCEPTO DE VENTANA CON EL DE LISTA  Una ventana es un área visual, normalmente de forma rectangular, que contiene algún tipo de interfaz de usuario, mostrando la salida y permitiendo la entrada de datos para uno de varios procesos que se ejecutan simultáneamente. Las ventanas se asocian a interfaces gráficas, donde pueden ser manipuladas con un puntero. En relación con las listas estas se pueden organizar en manera ordenada y además las ventanas poseen característica homogéneas al momento de su desarrollo. Además aquí vemos cuales atributos y operaciones ha de realizar.
Implementación  de  listas  a base de  vectores Tiene que declararse el tamaño 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  construcción  de una lista o la  eliminación  de todos sus elementos  podría  exigir un tiempo  cuadrático .
DESCRIBIR LOS MECANISMOS MEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIÓN PERMITEN IMPLEMENTAR LAS LISTAS.  Implementación  Para representar en lenguaje C esta estructura de datos se utilizarán punteros, un tipo de datos que suministra el lenguaje. Se representará una lista vacía con la constante NULL. Se puede definir la lista enlazada de la siguiente manera: struct lista { int clave; struct lista *sig; };
DESCRIBIR CÓMO 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  eliminación  se  simplifica . No es necesario buscar el elemento anterior.
PILA
INDICAR OBJETOS REALES QUE SE PUEDAN MODELAR CON DICHA ESTRUCTURA  Siempre que se hacen implementación físicas que se encuentren mas cerca de la forma mas fácil para la ejecución del mismo por ejemplo:  Cuando se montan y desmontan cajas de un camión.  Romper filas para salida si se encuentran mas cerca de la salida, entonces el ultimo sale primero al voltear la posiciones en la línea.
PRESENTAR VARIAS DEFINICIONES DE LA MISMA.  Una  pila  ( stack  o  pushdown  en inglés) es una lista de elementos de la cual sólo se puede extraer el último elemento insertado. La posición en donde se encuentra dicho elemento se denomina  tope  de la pila. También se conoce a las pilas como  listas  LIFO  (LAST IN - FIRST OUT:  el último que entra es el primero que sale). Operaciones básicas:  apilar, desapilar y cima . Una pila es un tipo especial de lista abierta en la que sólo 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". Además, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído.
PROPONER UN TAD QUE MODELE LAS PILAS.  Constructores: 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 tamaño(PILA lapila) desapilar(ENTSAL PILA lapila) Precondicion: : vacia(lapila). 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.
DESCRIBIR LOS MECANISMOS MEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIÓN PERMITEN IMPLEMENTAR LAS PILAS A TRAVÉS DE LISTAS Y VECTORES  Declaraciones de tipos para manejar pilas en C Los tipos que definiremos normalmente para manejar pilas serán casi los mismos que para manejar listas, tan sólo 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  impresión
PRESENTAR VARIAS DEFINICIONES DE LA MISMA.  Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
PROPONER UN TAD QUE MODELE LAS COLAS .  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). El TAD Cola se define por las siguientes operaciones:  __init__ Iniciar una nueva cola vacía. insertar Añadir 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 añadido estaVacio Comprobar si la cola está vacía.
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 semántica. De nuevo, la interfaz es:  __init__ Iniciar una nueva cola vacía.  insertar Añadir un nuevo elemento a la cola.  eliminar Eliminar y devolver un elemento a la cola. El elemento devuelto es el que tiene la prioridad más alta.  estaVacio Comprobar si la cola está vacía.
La diferencia semántica está en que el elemento eliminado de la lista no es, necesariamente, el primero que fue añadido. Más bien, es el elemento de la cola que tiene la prioridad más alta. En la implementación de la Cola de Prioridad no se especifica ni qué son las prioridades ni cómo 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 alfabético. Si son puntuaciones de bolos, podemos ir desde la más alta hasta la más baja, pero si son puntuaciones de golf, iríamos desde la más baja hasta la más alta. Mientras podamos comparar los elementos de la cola, podremos encontrar y eliminar el de mayor prioridad.  Esta implementación 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.
 
 

Estructura de datos.vrb

  • 1.
    ESTRUCTURA DE DATOS Viela Reyes 11-0879
  • 2.
  • 3.
    INDICAROBJETOS REALES QUE SE PUEDAN MODELAR CON DICHA ESTRUCTURA. Lista de la compra del supermercado Lista de tareas u obligaciones que hacer Lista de invitados
  • 4.
    PRESENTAR VARIAS DEFINICIONESDE LA MISMA. Es una lista de datos homogénea y dinámica, 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 dinámica, por lo que no tenemos que saber &quot;a priori&quot; los elementos que puede contener. Operaciones básicas : Visualizar su contenido . Buscar la posición de la primera ocurrencia de un elemento. Insertar y Eliminar un elemento en alguna posición. Buscar_k_esimo, que devuelve el elemento de la posición indicada Algoritmos
  • 5.
    PROPONERUN TAD QUE MODELE LAS LISTAS Añadir un elemento por la derecha acción añadeDch (e: elemento); var nuevo: ptrNodo fvar si esVacía entonces creaUnitaria (e) sino reservar (nuevo, creaNodo(e, nulo)); último^.setSig(nuevo); último:= nuevo; num:= num + 1; fsi facción Crear la lista vacía constructor crearLista; primero:= nulo; ultimo:= nulo; num:= 0; fconstructor
  • 6.
    RELACIONAR EL CONCEPTODE VENTANA CON EL DE LISTA Una ventana es un área visual, normalmente de forma rectangular, que contiene algún tipo de interfaz de usuario, mostrando la salida y permitiendo la entrada de datos para uno de varios procesos que se ejecutan simultáneamente. Las ventanas se asocian a interfaces gráficas, donde pueden ser manipuladas con un puntero. En relación con las listas estas se pueden organizar en manera ordenada y además las ventanas poseen característica homogéneas al momento de su desarrollo. Además aquí vemos cuales atributos y operaciones ha de realizar.
  • 7.
    Implementación de listas a base de vectores Tiene que declararse el tamaño 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 construcción de una lista o la eliminación de todos sus elementos podría exigir un tiempo cuadrático .
  • 8.
    DESCRIBIR LOS MECANISMOSMEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIÓN PERMITEN IMPLEMENTAR LAS LISTAS. Implementación Para representar en lenguaje C esta estructura de datos se utilizarán punteros, un tipo de datos que suministra el lenguaje. Se representará una lista vacía con la constante NULL. Se puede definir la lista enlazada de la siguiente manera: struct lista { int clave; struct lista *sig; };
  • 9.
    DESCRIBIR CÓMO LOSLENGUAJES 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 eliminación se simplifica . No es necesario buscar el elemento anterior.
  • 10.
  • 11.
    INDICAR OBJETOS REALESQUE SE PUEDAN MODELAR CON DICHA ESTRUCTURA Siempre que se hacen implementación físicas que se encuentren mas cerca de la forma mas fácil para la ejecución del mismo por ejemplo: Cuando se montan y desmontan cajas de un camión. Romper filas para salida si se encuentran mas cerca de la salida, entonces el ultimo sale primero al voltear la posiciones en la línea.
  • 12.
    PRESENTAR VARIAS DEFINICIONESDE LA MISMA. Una pila ( stack o pushdown en inglés) es una lista de elementos de la cual sólo se puede extraer el último elemento insertado. La posición en donde se encuentra dicho elemento se denomina tope de la pila. También se conoce a las pilas como listas LIFO (LAST IN - FIRST OUT: el último que entra es el primero que sale). Operaciones básicas: apilar, desapilar y cima . Una pila es un tipo especial de lista abierta en la que sólo se pueden insertar y eliminar nodos en uno de los extremos de la lista. Estas operaciones se conocen como &quot;push&quot; y &quot;pop&quot;, respectivamente &quot;empujar&quot; y &quot;tirar&quot;. Además, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído.
  • 13.
    PROPONER UN TADQUE MODELE LAS PILAS. Constructores: 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 tamaño(PILA lapila) desapilar(ENTSAL PILA lapila) Precondicion: : vacia(lapila). 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.
  • 14.
    DESCRIBIR LOS MECANISMOSMEDIANTE LOS CUALES LOS LENGUAJES DE PROGRAMACIÓN PERMITEN IMPLEMENTAR LAS PILAS A TRAVÉS DE LISTAS Y VECTORES Declaraciones de tipos para manejar pilas en C Los tipos que definiremos normalmente para manejar pilas serán casi los mismos que para manejar listas, tan sólo cambiaremos algunos nombres: typedef struct _nodo \{ int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila;
  • 15.
  • 16.
    INDICAR OBJETOS REALESQUE SE PUEDAN MODELAR CON DICHA ESTRUCTURA Las filas de los bancos Las filas de las escuelas Cola de impresión
  • 17.
    PRESENTAR VARIAS DEFINICIONESDE LA MISMA. Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
  • 18.
    PROPONER UN TADQUE MODELE LAS COLAS . 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). El TAD Cola se define por las siguientes operaciones: __init__ Iniciar una nueva cola vacía. insertar Añadir 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 añadido estaVacio Comprobar si la cola está vacía.
  • 19.
    DESCRIBIR LAS PARTICULARIDADESDE UN TAD COLA CON PRIORIDADES Cola de prioridad El TAD Cola de Prioridad tiene la misma interfaz que el TAD Cola pero distinta semántica. De nuevo, la interfaz es: __init__ Iniciar una nueva cola vacía. insertar Añadir un nuevo elemento a la cola. eliminar Eliminar y devolver un elemento a la cola. El elemento devuelto es el que tiene la prioridad más alta. estaVacio Comprobar si la cola está vacía.
  • 20.
    La diferencia semánticaestá en que el elemento eliminado de la lista no es, necesariamente, el primero que fue añadido. Más bien, es el elemento de la cola que tiene la prioridad más alta. En la implementación de la Cola de Prioridad no se especifica ni qué son las prioridades ni cómo 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 alfabético. Si son puntuaciones de bolos, podemos ir desde la más alta hasta la más baja, pero si son puntuaciones de golf, iríamos desde la más baja hasta la más alta. Mientras podamos comparar los elementos de la cola, podremos encontrar y eliminar el de mayor prioridad. Esta implementación 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)
  • 21.
    DESCRIBIR LAS IMPLEMENTACIONESDE COLAS CON VECTORES CIRCULARES.
  • 22.
  • 23.