Está en la página 1de 7

Laboratorios de computación

salas A y B
Professor:
Tista Garcia Edgar
Estructura de datos y algoritmos I
Asignatura:

Grupo: 1
No de Práctica(s): 5
Integrante(s):
Maldonado Martínez Miguel

No. de Equipo
de cómputo
Granada47
empleado

Semestre:
2019-2

Fecha de entrega:
13/03/19

Observaciones:

CALIFICACIÓN:
Práctica no. 5: Estructuras de datos lineales: Pila y cola.

Objetivo: Revisarás las definiciones, características, procedimientos y ejemplos de las


estructuras lineales Pila y Cola, con la finalidad de que comprendas sus estructuras y
puedas implementarlas.

Desarrollo:

Introducción.

El objetivo de esta práctica es comprender e implementar las estructuras de datos lineales


por lo tanto es necesario tener claros varios conceptos.

Primero, una estructura de datos consiste en una colección de nodos o registros del mismo
tipo mientras que una estructura de datos lineales es aquella en la que los elementos
ocupan lugares sucesivos en las estructuras, cada uno de los elementos tiene un único
sucesor y un único predecesor; esto se puede complementar con lo que se dijo en clase:
en las estructuras de datos lineales pueden crecer o disminuir la cantidad de
elementos, también se pueden insertar o eliminar los elementos ,en determinadas
posiciones, sin alterar su posición lógica.

El siguiente concepto es la pila: esta es una estructura de datos lineal y dinámica, en la


cual el elemento obtenido a través de la operación “eliminar” esta predefinido; si
comparamos esta definición con la que se proporcionó en clase (pila: tipo de abstracto de
datos (TAD) tipo LIFO ) podemos ver la única diferencia es, que se refiere a la pila como
un (TAD), en lugar de una estructura de datos lineales.

Las operaciones más comunes que se efectúan en una pila son: “Push”, la cual inserta
un
elemento en la pila y “Pop” que elimina un elemento de la pila; pero como de se trata
de una pila los primeros elementos que se agregan con un “Push” son los últimos en
eliminarse con el “Pop”.

Por lo tanto, se puede hacer “Push” a una pila que este vacía y se puede hacer “Pop”
a una pila que este llena pero no se puede hacer un “Pop” a una pila que esta vacía y
tampoco se puede hacer “Push” a una pila que este llena.

Otras operaciones que tienen la pila y que no se mencionaron en el manual son:


“clear” que borra todos los elementos de la pila, “isEmpty” que verifica si una pila está
vacía, “top” la cual regresa el elemento que se encuentra en la parte superior de la
pila sin removerlo y “create” que como su nombre lo dice crea una pila.
Normalmente se usa en aplicaciones en las que se necesita recuperar información en
orden inverso. Una de las aplicaciones más importantes de las pilas es la que se utiliza
dentro de la memoria RAM.

El ultimo concepto que se tiene que tener presente es el de cola.

La cola es una estructura de datos lineales, en la cual existe una predefinición del
último elemento y del primer elemento. Esta definición también difiere de la proporcionada
en clase ya que en la segunda se trata a la cola como un TAD.

Las operaciones que se ocupan en una cola son: INSERTAR elementos al final de la
estructura y ELIMINAR elementos por el inicio de esta. La operación de INSERTAR
también se le llama ENCOLAR y la operación de ELIMINAR también se le llama
DESENCOLAR.

Otras operaciones que se pueden realizar con la cola son: “create” que crea una cola
vacía, “isEmpty” que devuelve un verdadero si la cola está vacía, “clear” la cual
borra todos los elementos de una cola y “first” que retonorna el primer elemento de
una cola si eliminarlo.

Las aplicaciones de una cola son usualmente en tareas que esperan ser atendidas por
alguna aplicación en la computadora o en un servidor, un ejemplo de esto lo que se
lleva a cabo en la impresión de documentos.

Ejercicios de

laboratorio Ejercicio 1.

En el programa Pila.h se tenia un error en el prototipo de la función “crearPila” ya que el


no tener parámetro se tiene que especificar que el parámetro es void, me parece extraño
que el compilador de xcode no permitiera correr el programa sin especificar el
parámetro void.

Para poder implementar las funciones de push (meter) y pop (sacar) me apoye de los
apuntes dados en clase de esta manera la función push quedo de la siguiente manera:
En esta función al trabajar con un apuntador como parámetro se tiene que hacer uso
del operador flecha, creo que es la única diferencia de lo que se vio en clase, ya que
en clase solamente se indicaba con el operador punto.

Para implementar la función pop(sacar) también hice uso de lo visto en clase, pero con el
uso del operador flecha en lugar del operador punto, por lo tanto, las líneas de código
quedan de la siguiente manera.

El programa tenía un error en la función top ya que el ejecutar el ejecutarlo lo que


aparecía en pantalla era:

para corregir este error borre el menos uno que aparece en el ese
Al corregirlo lo que se imprime en consola queda de la siguiente manera:

Ejercicio 2.

Para poder hacer este programa recicle código del ejercicio anterior ya que la parte de
ingresar los valores a la pila es muy parecida, solo que aquí emplee un for para solicitar los
10 valores al usuario, como se muestra en la siguiente imagen:

Para poder cumplir con el objetivo principal del programa ocupé 2 pilas y un ciclo ir
dentro de un ciclo for, al hacer esto pude comparar el valor de top de la pila 1, que es
en la pila donde se almacenan los datos ingresados, con el valor de top de la pila 2, la
cual al inicio está vacía.

Hacer esta comparación me sirvió para poder ir ingresando el valor más alto “siempre”
hasta arriba de la pila 2.
Los valores inferiores al top de la pila 2 los metía en la pila 3. Al hacer esto con todos
los valores de la pila 1 obtenía el mayor de todos esos elementos el cual se localiza
en el top de la pila 2.

L a parte de este ejercicio que más se me complico fue sacar y meter valores de
las pilas si emplear variables, pero después de muchos intentos lo logre ocupando
solamente esas dos funciones (meter y sacar).

Ejercicio 3.

Este ejercicio se me hizo muy difícil al inicio porque no comprendía el enunciado, debido a
que la parte en la indica que se tienen que poner los valores de la pila de manera
invertida, no lograba imaginar lo que se solicitaba, pero después de releer el enunciado lo
entendí. La clave del ejercicio estaba en comprender que los valores se tenían que
invertir “en la pila”.

El programa solicita 5 números al usuario los cuales se almacenan en una pila, esta
parte la hice reciclando código del ejercicio 2. Para lograr invertir los elementos, los encolé
a una lista y luego los volví a ingresar a la misma pila.

Ejercicio 4.

Este fue mi ejercicio favorito ya que me costó mucho trabajo, pero al final lo logre
hacerlo.

Conclusión.

Compló con el objetivo de esta práctica ya que logre comprender las pilas y colas
lineales atravesó des sus definiciones y característica, además de que logre implantarlas
atravesó de la resolución de ejercicios.

Esta ha sido una de mis practicas favoritas por lo “difícil” de los ejercicios, pero al
final logre hacerlos.

También podría gustarte