PILAS Y COLAS DE ESTRUCTURA DE DATOS Estructura de Datos Aplicada Mtro. Sergio Lugo Ortiz Universidad Tecnológica de Aguascalientes Christian Armando López Torres 200384 TIADSM Christian Armando López Torres 200384 - TIADSM Objetivo de aprendizaje. Comprender el concepto de en estructura de datos sobre pilas, colas y como se pueden implementar para solucionar alguna problemática Resultado de aprendizaje. Aplicar pilas y colas para soluciones efectivas. Pilas Una pila es una estructura de datos que permite almacenar y recuperar datos en orden LIFO (ultimo en entrar, primero en salir). Una forma de representar una pila es mediante un arreglo o vector, donde se reserva un espacio de memoria para almacenar los elementos de la pila y se usa una variable para indicar el índice del último elemento insertado. Otra forma es mediante una lista enlazada, donde cada elemento tiene un puntero al siguiente y se usa un puntero para indicar el último elemento insertado. Operaciones sobre una pila Las operaciones básicas que podemos realizar sobre una pila son dos: almacenamiento (push) y recuperación (pop). Para manejar una estructura de datos tipo pila, un programador debe definir un conjunto de operaciones que permitan al usuario acceder y manipular los elementos en ella almacenados. Generalmente, cada una de estas operaciones suele recibir un nombre fijo e identificativo de la operación que realiza, siendo la terminología utilizada más común: Meter o Apilar: se denomina así a la operación que añade un elemento a una pila. Sacar o Desapilar: operación que saca un elemento de la pila. Inicializar Pila: una vez creada la pila y antes de usarla, esta debe quedar inicialmente vacía. Pila Vacía: operación que devuelve un valor de tipo lógico para comprobar si la pila se encuentra vacía antes de sacar un elemento. Pila Llena: la usaremos en aquellos casos en que sea necesario saber si la pila se encuentra llena antes de añadir un nuevo elemento. Cima: útil para obtener el último elemento que fue añadido a la pila, este es, el primero en salir de ella. 1 Christian Armando López Torres 200384 - TIADSM Ejemplo #include <iostream> const int MAX_SIZE = 10; class Pila { private: int datos[MAX_SIZE]; int tope; public: Pila() { tope = -1; } bool esta_vacia() { return tope == -1; } bool esta_llena() { return tope == MAX_SIZE - 1; } void pila_pone(int valor) { if (esta_llena()) { std::cout << "La pila esta llena" << std::endl; return; } datos[++tope] = valor; } int pila_quita() { if (esta_vacia()) { std::cout << "La pila esta vacia" << std::endl; return -1; } return datos[tope--]; } }; int main() { Pila pila_llena; for (int i = 0; i < MAX_SIZE; i++) { pila_llena.pila_pone(i); } std::cout << "La pila esta llena: " << pila_llena.esta_llena() << std::endl; Pila pila_vacia; std::cout << "La pila esta vacia: " << pila_vacia.esta_vacia() << std::endl; Pila pila; for (int i = 0; i < MAX_SIZE + 1; i++) { pila.pila_pone(i); } for (int i = 0; i < MAX_SIZE + 1; i++) { std::cout << pila.pila_quita() << std::endl; } return 0; } 2 Christian Armando López Torres 200384 - TIADSM Colas Una cola es una estructura de datos que representa una cola en el mundo real. Es un tipo de dato abstracto que se caracteriza por ser una secuencia de elementos en la que la operación de inserción se realiza por un extremo y la operación de extracción por el otro, se le llama también estructura FIFO (First In First Out), porque el primer elemento enn entrar es también el primero en salir. Representación Una representación gráfica de una cola es una serie de nodos o cajas que contienen los elementos de la cola, conectados por flechas que indican el sentido de la inserción y la extracción. El extremo donde se insertan los elementos se llama final y el extremo donde se extraen se llama frente. 3