Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

c++ listas, pilas y colas, Resúmenes de Programación C

lenguaje de programacion II, C++ pilas, listas, y colas

Tipo: Resúmenes

2021/2022

Subido el 25/06/2022

argenis-kelly
argenis-kelly 🇻🇪

5

(2)

5 documentos

1 / 19

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
República Bolivariana de Venezuela
Universidad Nacional Experimental Politécnica
De La Fuerza Armada Bolivariana
Núcleo Falcón – Extensión Punto Fijo
Punto Fijo – Estado Falcón
Estructuras Dinámicas de Información: Pilas y Colas
Autor:
Kelly, Argenis.
C.I: 26.057.686
Carrera: Ingeniería en Sistemas.
Semestre: 5ro.
Asignatura: Lenguaje de Programación II.
Docente: Molleja, Alfredo
Punto Fijo, 22 de junio de 2022.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Vista previa parcial del texto

¡Descarga c++ listas, pilas y colas y más Resúmenes en PDF de Programación C solo en Docsity!

República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica De La Fuerza Armada Bolivariana Núcleo Falcón – Extensión Punto Fijo Punto Fijo – Estado Falcón

Estructuras Dinámicas de Información: Pilas y Colas

Autor: Kelly, Argenis. C.I: 26.057. Carrera: Ingeniería en Sistemas. Semestre: 5ro. Asignatura: Lenguaje de Programación II. Docente: Molleja, Alfredo Punto Fijo, 22 de junio de 2022.

Contenido

  • Estructuras Dinámicas de Información: Pilas y Colas.........................................................
  • Introducción.........................................................................................................................
  • Estructuras Dinámicas de Información................................................................................
    • Pilas..................................................................................................................................
      • Declaración de Pilas.....................................................................................................
      • Operaciones sobre Pilas...............................................................................................
      • Pilas alojadas en arreglos.............................................................................................
      • Implantación de procedimientos recursivos mediante Pilas......................................
    • Colas...............................................................................................................................
      • Representación de Colas............................................................................................
      • Operaciones con Colas...............................................................................................
      • Colas Circulares.........................................................................................................
      • Doble Cola.................................................................................................................
      • Aplicaciones de Colas................................................................................................
  • Conclusión.........................................................................................................................
  • Bibliografía........................................................................................................................

Estructuras Dinámicas de Información

Una estructura de datos dinámica es aquella en la que el tamaño ocupado en memoria puede modificarse durante la ejecución del programa. De esta manera se pueden adquirir posiciones adicionales de memoria a medida que se necesiten durante la ejecución del programa y liberarlas cuando no se necesiten. Las variables que se crean y están disponibles durante la ejecución del programa se llaman variables continuas. Estas variables se representan con un tipo de dato llamado puntero. Las estructuras de datos dinámicas se clasifican en lineales (listas, pilas y colas) y no lineales (árboles y grafos). Las pilas, colas y listas constituyen estructuras de datos especiales que basan su funcionamiento en arreglos o punteros. Las pilas permiten la inserción y eliminación de elementos solo por uno de sus extremos y encuentran su aplicación práctica en llamadas a subprogramas, recursividad u ordenamiento, entre otros. El problema planteado por las denominadas “Torres de Hanoi”, por ejemplo, usa el principio de las pilas para su resolución. Por su parte, las colas son estructuras cuyos elementos se insertan por uno de sus extremos y salen por el otro; su modo de operación se parece a la cola de espera que se genera frente a una ventanilla de atención. Finalmente, las listas son estructuras que hacen uso más eficiente de la memoria, empleando solo la que necesitan en función de la cantidad de elementos que poseen. Si bien en este manual las pilas y colas se implementaron sobre arreglos por fines didácticos, la práctica indica que pueden ser creadas también sobre listas basadas en punteros.

Pilas

Una Pila (stack) es un tipo especial de lista lineal en la que la inserción y borrado de nuevos elementos se realiza sólo por un extremo, el cual es denominado cima o tope. Dado que las operaciones de insertar y eliminar se realizan por un solo extremo (el superior), los elementos sólo pueden eliminarse en orden inverso al que se insertan en la pila. El último elemento que se introduce en la pila es el primero que se puede sacar, debido a esto a estas estructuras se les denomina LIFO(last-in, first-out).

En este ejemplo, los elementos ingresan y salen de la pila por el índice de mayor valor. La variable “cima” almacena la posición del último elemento insertado, mientras que cuando la pila está vacía su valor es -1. “Una pila representa una estructura lineal de datos en la que se puede agregar o quitar elementos únicamente por uno de sus lados. En consecuencia, los elementos de una pila se eliminarán en orden inverso al que fueron insertados” (Cairo, & Guardati, 2010, p. 75). Otra forma de ayudar a la mente a entender el funcionamiento de esta estructura es homologándola a una pila de platos en un restaurante, en la que el encargado de lavarlos los va acomodando uno encima del otro, mientras que quien sirve los platillos va retirándolos desde la parte superior; es decir, el último plato colocado en el lavandero será el primero en ser utilizado o, en términos técnicos, “el último en entrar será el primero en salir”. Declaración de Pilas Los tipos que definiremos normalmente para manejar pilas serán casi los mismos que para manejar listas, tan solo cambiaremos algunos nombres: typedef struct_nodo { int dato; struct_nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila; tipoNodo es el tipo para declarar nodos, evidentemente.

 Una pila se puede implementar mediante arreglos(arrays) o mediante listas enlazadas.  Una implementación estática se realiza utilizando un arreglo (array)de tamaño fijo  Una implementación dinámica mediante una lista enlazada.  En C para definir una pila con arreglos es necesario usar una estructura.  Los miembros de la estructura pila incluyendo una lista (arreglo o array) y un índice o apuntador a la cima de la pila además una constante con el máximo número de elementos.  El tipo pila junto al conjunto de operaciones de la pila se pueden meter en un archivo de inclusión (pila.h). Al utilizar un arreglo para los elementos de la pila es necesario tomar en cuenta que el tamaño de la pila no puede exceder del tamaño del arreglo y la condición pila llena será significativa para el diseño. El método usual para introducir elementos en una pila es definir donde se ubicará el primer elemento fondo de la pila en la posición 0 del arreglo y sin ningún elemento en su interior, es decir, definir una pila vacía; a continuación, se van introduciendo elementos en el arreglo (en la pila) de modo que el primer elemento que se introduce en la pila vacía y en la posición 0, el segundo elemento en la posición 1, el siguiente en la posición 2 y así sucesivamente. Con estas operaciones el apuntador que apunta a la cima de la pila se va incrementando en 1 cada vez que se añade un nuevo elemento; es decir, el apuntador de la pila se almacena el índice del arreglo que se está usando como cima de la pila. resulta conveniente el almacenamiento secuencial para el tratamiento de pilas. Podemos tener una variable llamada TOPE que contenga el índice donde está ubicado el tope de la pila. Cuando la pila está vacía, se hace TOPE=0. Por ejemplo: se puede definir una constante llamada CANTELEMENTOS que tenga el valor máximo de elementos que podrá contener la pila, un tope con la última posición, un valor a ser ingresado y el arreglo mismo: #define CANTELEMENTOS 10; int tope= -1; /inicializamos a la variable tope con el valor -1 para que represente a la pila vacía porque el 1º elemento tiene índice 0./ int pila[CANTELEMENTOS];

int valor; Para darte un ejemplo sencillo: supone que tienes una pila de 10 platos. El primer plato de la pila será el último en quitarse y el último plato de la pila será el primero en quitarse. Un arreglo constituye el depósito de los elementos de la pila. El rango del arreglo debe ser lo suficientemente amplio para poder contener el máximo previsto de elementos de la pila. Un extremo del arreglo se considera el fondo de la pila, que permanecerá fijo. La parte superior de la pila, tope o cima, estará cambiando dinámicamente durante la ejecución del programa. Además del arreglo, una variable entera nos sirve para tener en todo momento el índice del arreglo que contiene el elemento tope. Las declaraciones, procedimientos y funciones para representar el TAD pila, forman parte de la unidad pila.  Max_elem=… (Dependerá de cada realización).  Tipo_elem=… (Tipo de los elementos de la pila).  Pila= Registro.  Elem= arreglo [1…Max_elem] de Tipo_elem;  Tope= entero; FinRegistro.

simas de las pilas. Para la obtención de la dirección de retorno es de suponer que el procedimiento P contiene una llamada recursiva en la sentencia N. Entonces guarda en optra pila la dirección de retorno, que será la sentencia siguiente, la N+1. De tal forma que cuando el nivel de ejecución del procedimiento P actual termine, o sea, alcance la sentencia end final, usará dicha pila de direcciones para volver al nuevo nivel de ejecución.

Colas

Una cola es otro tipo especial de lista en el cual los elementos se insertan en un extremo (el posterior) y se suprimen en el otro (el anterior o frente). Las colas se conocen también como listas “FIFO” (first-in first-out) o listas “primero en entrar, primero en salir”. Las operaciones para una cola son análogas a las de las pilas, aunque las diferencias sustanciales consisten en que las inserciones se realizan al final de la lista y no al principio (Aho, 1983). Representación de Colas Se las puede representar por listas enlazadas o por arrays C= Q (1), Q (2),…, Q (n). En cualquier caso se necesitan dos punteros frente (f) final(r) y la lista o array de n elementos (LONGMAX)  Acceder al primer elemento de la cola.  Añadir un elemento al final de la cola.  Eliminar el primer elemento de la cola.  Vaciar una cola.  Verificar el estado de la cola: vacía o llena.

Operaciones con Colas  Crear: se crea cola vacía.  Encolar (añadir, entrar, insertar): se añade un elemento a la cola. Se añade al final de esta.  Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.  Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entró. Colas Circulares Una cola circular o anillo es una estructura de datos en la que los elementos están de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden cosultarse, añadirse y eliminarse únicamente desde la cabeza del anillo que es una posición distinguida. Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual. Doble Cola Como ocurre con toda representación estática, una de las principales desventajas es que hay que prever un máximo de elementos, y de ese máximo no se puede pasar. La realización de una cola mediante una lista enlazada permite ajustarse exactamente al número de elementos de la cola. Esta implementación con las listas enlazadas utiliza dos punteros que acceden a la lista, el puntero frente y el puntero final. Cola implementada con listas enlazadas, el puntero final referencia al último nodo que fue añadido. En esta representación no tiene sentido la operación que indica si la cola está llena. Al ser una estructura dinámica crece y decrece según las necesidades. La definición de cola usando listas enlazadas serían:  Tipo_elto: (Tipo del campo información de cada nodo).  Nodo: Registro.  Elto: Tipo_elto;  Sig: hNodo;  Fregistro; Cola:  Registro frente: hNoho;

Ejemplo:

Bibliografía

GitHub - alirioGomez41/Lista-Pila-y-Cola-C-: Librerias .... Recuperado 2022, a partir de https://github.com/alirioGomez41/Lista-Pila-y-Cola-C- Pilas y Colas - UAEH. Recuperado 2022, a partir de https://www.uaeh.edu.mx/docencia/P_Presentaciones/icbi/asignatura/Cap3PilasColas.pdf PILAS Y COLAS C++ por Armando Santos. Recuperado 2022, a partir de https://prezi.com/p/jo9jemjhtghd/pilas-y-colas-c/ Pilas y Colas C++ | Mundo Choc Cac. Recuperado 2022, a partir de https://victorhugocc.choccac.com/2012/06/pilas-y-colas-c/ PILAS Y COLAS EN C++ - algoritmos.cedetec.cl. Recuperado 2022, a partir de http://www.algoritmos.cedetec.cl/images/pdf/Pilas_y_Colas.pdf Pilas y Colas en C++ by - Prezi. Recuperado 2022, a partir de https://prezi.com/sf9sve7wnjc4/pilas-y-colas-en-c/ ¿qué son las pilas y colas en estructura de datos? Recuperado 2022, a partir de https://aleph.org.mx/que-son-las-pilas-y-colas-en-estructura-de-datos