Está en la página 1de 13

Estructura de Datos

Unidad 1. Estructuras de datos

Ingeniera en Desarrollo de software Cuatrimestre 06

Asignatura: Estructuras de Datos

Clave: 160920621/150920621

Estructura de Datos
Unidad 1. Estructuras de datos

ndice
Presentacin de la unidad ___________________________________________________ 3 Propsitos de la unidad _____________________________________________________ 3 Competencia especfica ____________________________________________________ 3 Temario de la unidad _______________________________________________________ 3 Tema 1. Estructura de datos _________________________________________________ 4 Tema 1.1. Pilas ___________________________________________________________ 4 Tema 1.2. Listas __________________________________________________________ 7 Tema 1.3. Colas __________________________________________________________ 9 Cierre de la unidad _______________________________________________________ 12 Para saber ms ________________________________________________________ 12 Fuentes de consulta ______________________________________________________ 13

Estructura de Datos
Unidad 1. Estructuras de datos
Presentacin de la unidad
En esta primera unidad conocers tres conceptos importantes acerca de estructuras de datos que son: pilas, colas y listas. Para cada uno de estos conceptos, conocers, comprenders y utilizars adecuadamente sus mtodos fundamentales, as como sus mtodos de soporte. De esta manera, sers capaz de realizar ejercicios de programacin donde apliques las operaciones que se ejecutan sobre las estructuras mencionadas. Los ejercicios de programacin estarn relacionados con aplicaciones reales.

Propsitos de la unidad
Al finalizar la unidad sers capaz de emplear pilas, colas y listas, as como sus diferentes operaciones en programas con aplicaciones reales haciendo uso de este tipo de estructuras.

Competencia especfica
Aplicar algoritmos para almacenar datos de forma segura, mediante la utilizacin de las estructuras bsicas de la programacin.

Temario de la unidad
1. Estructuras de datos 1.1. Pilas 1.1.1. Generalidades 1.1.2. Creacin de una pila 1.1.3. Operaciones bsicas 1.2. Listas 1.2.1. Generalidades 1.2.2. Creacin de una lista 1.2.3. Operaciones bsicas 1.3. Colas 1.3.1. Generalidades 1.3.2. Creacin de una cola 1.3.3. Operaciones bsicas

Estructura de Datos
Unidad 1. Estructuras de datos
Tema 1. Estructura de datos
Para comenzar con los conceptos bsicos de la Estructura de datos, forma de trabajar, etc. Abre el archivo de Actividades de la unidad y dirgete a la Actividad 1. Foro de la asignatura donde encontrars las instrucciones para ingresar al foro que te permitir realizar preguntas, hacer comentarios, entre otras cosas. Una vez ingreses al foro, regresa a la lectura de tu unidad. No olvides atender a las indicaciones en ella se te presentan. As mismo, ingresa al archivo Actividades de la unidad y realiza la Actividad 2. Identificacin de la relacin entre algoritmos y estructuras de datos. La cual tiene como propsito que identifiques las Estructura de datos. Puedes buscar estas definiciones tanto en las fuentes proporcionadas en tu unidad, as como en fuentes complementarias, como lo son libros, internet, journals, etc. Luego de realizar las actividades y consultar los textos, es necesario que formes un concepto propio acerca de los diferentes trminos utilizados en las estructuras de datos: pilas, colas y listas.

Tema 1.1. Pilas


El primer tema que revisaremos es el de pila. Una pila se puede definir como un contenedor de objetos que se introducen y se sacan segn el principio conocido como LIFO (last in, first - out) que significa, ltimo en entrar, primero en salir. Siempre es posible insertar objetos en una pila, sin embargo, slo es posible sacar el objeto que se introdujo ms recientemente. Las pilas son estructuras de datos fundamentales que se usan en muchas aplicaciones como puede ser: cuando los navegadores de Internet van guardando en una pila las direcciones de los sitios recin revisados. Cuando un usuario visita un sitio nuevo, su direccin es introducida para meterla en la pila de direcciones, luego el navegador permite que el usuario quite el sitio recin visitado dando clic al botn atrs. Como podemos notar, son muchas las aplicaciones de las pilas que realizamos de forma cotidiana en actividades informticas. La Actividad 3. Ejemplificacin con un caso cotidiano del uso de pilas, colas y listas, en el inciso 1, te pide que anotes un ejemplo de la vida cotidiana, donde se utilice el concepto de pilas, durante la lectura de esta unidad podrs encontrar algunas respuestas, sin embargo, es recomendable que busques otras ms ya sea en las fuentes sugeridas o en fuentes externas. Las actividades 3, 4 y 5, se trabajarn a la par de los temas 1.1. Pilas, 1.2 Listas y 1.3. Colas, por lo tanto, las actividades las comenzars a trabajar desde este momento; no obstante, slo las podrs concluir hasta terminar los 3 temas.

Estructura de Datos
Unidad 1. Estructuras de datos
El nombre de pila se le da a esta estructura como una analoga con las mquinas servidoras de platos de resorte en una cafetera o tambin por la forma como se despachan los dulces con el despachador PEZ. Tambin podemos ubicarla como una pila de libros o de monedas.

Pila de platos

Pila de libros

Pila de monedas

Despachador de dulces PEZMR. Una pila es un tipo de dato abstracto (TDA) que soporta dos mtodos fundamentales: push y pop. Por su importancia, la estructura de datos pila se incluye como clase constructora en el paquete java.util de Java. En la Actividad 4. Resolucin de un programa donde se cree una pila, una cola y una lista, especficamente el inciso 1, se te indica que tendrs que programar los mtodos que se emplean en las pilas. Apyate en la bibliografa sugerida de la unidad para revisar los mtodos que se emplean en las pilas, por ejemplo: push (o): permite insertar, introducir o empujar un objeto en la parte superior de la pila.

Estructura de Datos
Unidad 1. Estructuras de datos
Entrada: objeto Salida: ninguna pop (): sacar el objeto superior de la pila y regresarlo; se produce un error si la pila est vaca. Entrada: ninguna Salida: objeto

Para una pila tambin se definen mtodos de soporte: size(): Regresa la cantidad de objetos en la pila. Entrada: ninguna Salida: entero isEmpty(): Regresa un valor booleano que indica si la pila est vaca. Entrada: ninguna Salida: booleana Top(): Regresa el objeto superior de la pila sin sacarlo de ella, se produce un error si la pila est vaca. Entrada: ninguna Salida: objeto La implementacin de un tipo de dato abstracto en Java se hace en dos pasos. El primero es la definicin de una interfaz de programacin de aplicacin Java o interfaz; solamente que describe los nombres de los mtodos que soporta el TDA (tipo de dato abstracto) y cmo se deben declarar y usar. Revisa Goodrich, Tamassia, (2010, pp. 136-137), pues, en este texto, podrs ver a travs de ejemplos como se crea la interfaz en Java, el proceso de declaracin y uso de variables. Tambin hace referencia a la forma de utilizar los mtodos que emplea la estructura de datos pila. Despus de conocer estos conceptos y verlos ejemplificados, podrs llevarlos a la prctica a travs de las actividades que se plantean en el documento del mismo nombre; adems podrs ubicar los mtodos que se aplican en la estructura pila e identificars, cmo ilustrar una pila a travs de un diagrama o dibujo, entre otras cosas que te permitirn diferenciar con respecto a otras estructuras de datos.

Estructura de Datos
Unidad 1. Estructuras de datos
Las pilas son aplicaciones importantes en el ambiente de ejecucin de los programas Java. Un programa Java en ejecucin tiene una pila privada, llamada pila de mtodos Java que se usa para rastrear las variables locales y otra informacin importante sobre los mtodos, a medida que se invocan durante la ejecucin. En Joyanes, Zahonero (2012, pp. 490-498) encontrars cmo emplear este tipo de estructura para realizar aplicaciones cotidianas. Tambin, podrs darte cuenta cmo este tipo de estructura queda inherente a la forma de ejecucin de los programas en el lenguaje Java. Revisa las pginas que se te sealan. Como has constatado, el tema de pilas es amplio y a la vez muy interesante ya que implementando pilas en diferentes programas podrs mejorar la eficiencia de los mismos, tambin podrs identificar la funcionalidad y en qu reas se han hecho aplicaciones de las pilas. No olvides el ejemplo del caso de los sitios web visitados por los usuarios; otro ejemplo lo puedes verificar en los editores de texto, estos suelen tener una funcin llamada deshacer (undo) que cancela las operaciones recientes de edicin, y hace regresar al documento a sus estados anteriores. Esta operacin de deshacer se logra guardando los cambios de texto en una pila. En la Actividad 5. Aplicacin de las operaciones bsicas de una estructura de datos, inciso 1, aplicars el cdigo que realizaste en la Actividad 4, dndole un giro orientado hacia alguna aplicacin real de una pila, en la lectura de esta Unidad podrs encontrar algunas opciones, aunque t puedes sugerir y optar por la que ms te convenga.

Tema 1.2. Listas


El siguiente tipo de estructura que conocers ser la lista. Una lista es una coleccin de nodos que en conjunto forman un ordenamiento de forma lineal. El orden se determina como en el juego infantil sigan al lder, porque cada nodo es un objeto compuesto que guarda una referencia a un elemento y, una referencia llamada next (siguiente), a otro nodo. Podemos traer a nuestra mente una lista de alumnos inscritos en un curso, una lista de productos para hacer el mandado, etc. La lista es el tipo ms general de estructura lineal donde las inserciones y eliminaciones se realizan en cualquier punto de la lista, por esta razn se debe especificar dnde se requiere que se haga la operacin. Sus operaciones bsicas son: creacin, destruccin, insercin, eliminacin, consulta y verificacin de lista vaca. Pudiera considerarse como una redundancia el hecho de tener un nodo que refiera a otro nodo, sin embargo, la referencia next dentro de un nodo se puede considerar como un enlace o apuntador hacia otro nodo. As mismo, pasar de un nodo a otro con una referencia next se llama salto de apuntador. Al primer nodo de la lista se le llama: cabeza (top) y al ltimo se le conoce como fin de la lista.

Estructura de Datos
Unidad 1. Estructuras de datos
Para que puedas conocer a detalle la forma como se conceptualiza la lista, cmo se agregan elementos, se retiran, etc., es conveniente que revises Joyanes (2010). Fundamentos de programacin, Algoritmos, Estructuras de datos y objetos. Las pginas que debers revisar son de la 440 a la 443. Tambin debers revisar Joyanes et al (2012, pp. 500-512), en dicho texto encontrars: cmo emplear este tipo de estructura para realizar aplicaciones cotidianas. Podrs tambin darte cuenta cmo este tipo de estructura queda inherente a la forma de ejecucin de los programas en el lenguaje Java. Revisa las pginas que se te sealan. Es de vital importancia que revises la fuente arriba citada para que puedas conocer a detalle esta estructura de datos y, de esta manera, puedas establecer la diferencia en uso con respecto a otras estructuras como: la pila, que fue el tema anterior revisado, as como la estructura cola que es otra de las estructuras ms utilizadas. Luego de haber revisado la bibliografa debers tener una idea clara del tema, as como poder emplear las diferentes estructuras que conoces y conocers dependiendo del tipo de problemas de desarrollo que se te presente.

Componentes de una lista Imagen recuperada de: yatarihuana2.blogspot.es Una lista enlazada consta de un nmero de elementos y cada elemento tiene dos componentes: una referencia al siguiente elemento de la lista y un valor, que puede ser de cualquier tipo. Una lista enlazada requiere de las siguientes funciones: Definir la clase nodo y referencia a nodo. Inicializar o crear. Insertar elementos en una lista. Eliminar elementos de una lista. Buscar elementos de una lista. Recorrer una lista. Comprobar si la lista est vaca.

Estructura de Datos
Unidad 1. Estructuras de datos
Este tipo de estructura puede resultar un poco ms complejo de utilizar, lo recomendable es que conozcas y sepas utilizar las diferentes estructuras de datos, as como la forma de emplear adecuadamente los temas de las siguientes unidades como son los rboles y, con base en tu experiencia, decidas qu conceptos utilizar para la resolucin de determinado problema. Para que conceptualices el trmino lista se puede utilizar la analoga con listas que utilices en tu da a da, revisa la Actividad 3. Ejemplificacin con un caso cotidiano del uso de pilas, colas y listas. En el inciso 2, se te pide que anotes un ejemplo de la vida cotidiana donde se utilice el concepto de listas, durante la lectura de esta unidad podrs encontrar algunas respuestas, sin embargo, es recomendable que busques otras ms ya sea en las fuentes sugeridas o en externas. Las listas resuelven las situaciones mencionadas arriba; son, probablemente, la segunda estructura de almacenamiento de propsito general ms comnmente utilizada, despus de los arreglos. Una lista es un tipo de estructura conveniente para usarse en muchos tipos de bases de datos de propsito general. Tambin, puede remplazar a los arreglos como base para otras estructuras de almacenamiento como pilas y colas. No pierdas de vista lo sealado, pues, ello te servir para realizar la Actividad 4. Resolucin de un programa donde se cree una pila, una cola y una lista, especficamente el inciso 2, donde se te indica que tendrs que programar los mtodos que se emplean en las listas. No olvides apoyarte de la bibliografa sugerida, en las lneas siguientes de lectura de esta unidad, pues en ella revisars podr ver qu mtodos se emplean en las listas. La ventaja ms evidente de utilizar estructuras ligadas, es que permite optimizar el uso de la memoria, pues no desperdiciamos el espacio de localidades vacas. Ahora entra a la Actividad 5. Aplicacin de las operaciones bsicas de una estructura de datos, inciso 2; aplicars el cdigo que realizaste en la Actividad 4, dndole un giro orientado hacia alguna aplicacin real de una lista. En la lectura de esta unidad podrs encontrar algunas opciones, aunque t puedes sugerir y optar por otra opcin, luego de la realizacin de la actividad podrs darte cuenta de que las listas son una estructura de datos bastante interesante; sin embargo, presenta algunas desventajas, la ms grande, de las listas, es que deben ser recorridas desde su inicio para localizar un dato particular. Es decir, no hay forma de acceder a algn dato de la lista en particular, como se hara en un arreglo. Tema 1.3. Colas Para concluir con esta unidad trataremos el tema de colas, se trata de una estructura que consta solamente de 2 operaciones: insercin (push) y eliminacin (pop). La funcin push slo se puede realizar a travs de un extremo (frente) y la funcin pop slo se realiza por el otro extremo (final).

Estructura de Datos
Unidad 1. Estructuras de datos
Este tipo de estructura se conoce como FIFO (first in firstout), el recorrido se realiza sacando el primer dato que se insert hasta llegar al extremo final. Para entender este concepto pensemos en la cola (fila) que hacemos para comprar las tortillas, la fila en el banco o la que hacemos para comprar un boleto en el cine. Para ampliar estas analogas del concepto de colas con filas o colas de la vida cotidiana, abre la Actividad 3. Ejemplificacin con un caso cotidiano del uso de pilas, colas y listas. En el inciso 3, te indica que anotes un ejemplo de la vida cotidiana donde se utilice el concepto de colas, durante la lectura de esta unidad podrs encontrar algunas respuestas, sin embargo, es recomendable que busques otras ms ya sea en las fuentes sugeridas o en otras externas. Procura ofrecer analogas novedosas e interesantes.

Fila para las tortillas, tambin conocida como cola de las tortillas. Imagen recuperada de: fotolog.com Para el caso particular del trabajo con la estructura FIFO en primera instancia se compara para saber si existe algn elemento en la cola, de no ser as, entonces se muestra un mensaje que indica que la cola est vaca. De otra forma compara si Frente es mayor o igual a Final, as simplemente hace un Recorrido lineal como los anteriores. De otra forma usar Max como bandera para saber cundo empezar a contar de 0 a Final. Para llevar a la prctica estos conceptos, revisa la Actividad 4. Resolucin de un programa donde se cree una pila, una cola y una lista, especficamente el inciso 3, te indica que tendrs que programar los mtodos que se emplean en las colas, no olvides apoyarte de la bibliografa sugerida, en las lneas siguientes de lectura de esta unidad podrs ver qu mtodos se emplean en las colas. Para profundizar en el tema, revisa Goodrich, Tamassia (2010, pp. 140-142). En dicho texto, revisars de forma detallada cada uno de los conceptos que te he mencionado: la forma de introducir elementos a cada estructura, sacar elementos de ella, entre otros. La finalidad de que consultes estos temas es que te adentres en ellos y que ubiques las similitudes y diferencia entre cada estructura, as como la forma adecuada de utilizar cada una de las estructuras de datos que has revisado en la unidad.

10

Estructura de Datos
Unidad 1. Estructuras de datos
Revisar Joyanes et al (2012, pp. 520-522) donde encontrars cmo emplear este tipo de estructura para realizar aplicaciones cotidianas. Podrs tambin darte cuenta cmo este tipo de estructura queda inherente a la forma de ejecucin de los programas en el lenguaje Java. Revisa las pginas que se te sealan.

Estructura de datos cola Imagen recuperada de: programacionfacil.com Como puedes observar, la estructura de datos conocida como cola puede utilizarse para ayudar a resolver situaciones de nuestra vida cotidiana, por ejemplo, cuando enviamos a imprimir un documento desde una red de computadoras, o cuando nos encontramos en una conversacin en un chat, etc. Para ampliar estos casos donde se aplican las colas, revisa la Actividad 5. Aplicacin de las operaciones bsicas de una estructura de datos, inciso 3, aplicars el cdigo que realizaste en la unidad 4, dndole un giro orientado hacia alguna aplicacin real de una cola, en la lectura de esta unidad podrs encontrar algunas opciones, aunque t puedes sugerir y optar por otra opcin, al trmino de esta actividad, habrs realizado un programa que incluso podras aplicar en tu mbito laboral, no olvides regresar a la lectura para conocer el cierre de la unidad. Una vez que terminaste de revisar los temas de la unidad, concluye: la Actividad 3. Ejemplificacin con un caso cotidiano del uso de pilas, colas y listas; Actividad 4. Resolucin de un programa donde se cree una pila, una cola y una lista; y Actividad 5. Aplicacin de las operaciones bsicas de una estructura de datos. Posterior a concluir tus actividades, realiza la Evidencia de aprendizaje de la unidad, pues, sta es la actividad integradora de lo que consultaste y realizaste en la unidad.
11

Estructura de Datos
Unidad 1. Estructuras de datos
Cierre de la unidad
En la presente unidad abordaste las diferentes estructuras de datos: pilas, listas y colas. Como ya se te mencion es primordial que te adentres en cada uno de los temas de la unidad a travs de la consulta de las diferentes fuentes indicadas, as como tambin es necesario que leas detalladamente las actividades que se te han asignado por unidad y las resuelvas a cabalidad para poder tener conocimiento profundo de las estructuras de datos, pues stas son fundamentales en el rea de la programacin, adems que te permitirn asimilar de mejor manera los temas de las unidades posteriores. Por lo anterior, es necesario que conozcas bien en qu consiste cada una de las estructuras, cmo se utilizan, qu mtodos se realizan en cada una, as como en qu casos puedo emplearlas. Adems, comprender bien cada estructura te permitir abordar de una manera ms sencilla los temas de las siguientes unidades. Resultado del conocimiento y comprensin de los temas de pilas, colas y listas, podrs realizar programas donde apliques estos conceptos avanzados de programacin, es decir, podrs realizar programas de aplicacin para el da a da, como lo son: una cola de impresin, una lista de correo electrnico, entre otras aplicaciones.

Para saber ms
Existen diversas fuentes que puedes consultar para ampliar tus conocimientos. Por ejemplo: http://www.fismat.umich.mx/computacion/computacion2/estructuras/notasEstructuras.pdf Esta liga te llevar a un documento de extensin PDF. Este archivo contiene temas muy completos en lo que a estructura de datos se refiere; contiene, adems, ejemplos que explican comportamientos de las diferentes estructuras de datos empleando lneas de cdigo y lenguaje Java. http://www.utim.edu.mx/~svalero/docs/ED_Java.pdf En el documento PDF al que podrs acceder en la liga arriba anotada, podrs encontrar de una forma breve, pero concisa, los conceptos bsicos de las estructuras de datos, sobre todo, a travs de imgenes que ilustran los componentes y comportamiento de los mismos; podrs conocer cmo se utilizan dichas estructuras. http://www.grycap.upv.es/gmolto/docs/eda/EDA_Tema_1_gmolto.pdf En esta otra fuente encontrars conceptos de java para utilizar en las estructuras de datos. Es importante que para complementar tu conocimiento de sta, y cualquiera otra de tus materias, consultes diferentes fuentes; las arriba mencionadas son slo algunas, es recomendable, si buscas otras fuentes en Internet, que te cerciores de que stas son fidedignas.

12

Estructura de Datos
Unidad 1. Estructuras de datos
Fuentes de consulta
Goodrich/, Tamassia (2010). Estructura de Datos y Algoritmos en Java. Mxico: CECSA Joyanes (2010). Fundamentos de programacin, Algoritmos, Estructuras de datos y objetos. Espaa: Mc Graw Hill Joyanes & Zahonero (2012). Programacin en Java 2, Algoritmos, estructuras de datos y programacin orientada a objetos. Espaa: Mc Graw Hill

13