Want to make creations as awesome as this one?

Transcript

Sabías qué: "La elección entre usar una pila o una cola generalmente depende del tipo de acceso y orden que se requiere para los elementos en una aplicación particular.“
Colas Es una estructura de datos lineal que sigue el principio de FIFO (First In, First Out), lo que significa que el primer elemento que se añade a la cola es el primero en ser retirado. Es similar a una fila de personas esperando en un establecimiento, donde la primera persona que llega es la primera en ser atendida. Característica principal Los elementos se procesan en el mismo orden que fueron añadidos.

2.3 Pilas y colas

Pilas Una pila es una estructura de datos que sigue el principio Last In, First Out (LIFO). Esto significa que el último elemento añadido a la pila es el primero en ser eliminado o accedido. La pila se visualiza como una colección vertical de elementos, donde las adiciones y eliminaciones se realizan desde el mismo extremo, conocido como el "tope" de la pila. Característica principal Solo se puede interactuar con el elemento que está en el tope de la pila.

Unidad 2. Estructuras de datos

Reproduce el siguiente material audiovisual, fortalecerás tu comprensión sobre la colas: Programación ATS (2022, 22 de marzo) 99. Programación en C++ || Colas || Concepto de Cola[video] YouTube https://www.youtube.com/watch?v=5CClpYQTGUI

2.3 Pilas y colas

Reproduce el siguiente material audiovisual, fortalecerás tu comprensión sobre la pilas: El profe Ariel (2022, 22 de marzo) Estructuras de Datos: Que es una PILA [video] YouTube https://www.youtube.com/watch?v=cKvb427aM3A

Unidad 2. Estructuras de datos

2.3.1 Representaciones y operaciones

2.3 Pilas y colas

Para ver la información, da clic en los recuadros.

Unidad 2. Estructuras de datos

// Método para eliminar el elemento superior de la pila void pop() { if (!isEmpty()) { elementos.pop_back(); } else { throw std::out_of_range("Pila vacía"); } } }; int main() { Pila miPila; miPila.push(10); miPila.push(20); miPila.push(30); std::cout << "Elemento superior de la pila: " << miPila.top() << std::endl; // Debería mostrar 30 miPila.pop(); // Elimina el 30 std::cout << "Elemento superior después de pop: " << miPila.top() << std::endl; // Debería mostrar 20 return 0; }

Ejemplo. Uso de pilas en C++

#include <iostream>#include <vector> class Pila { std::vector<int> elementos; // Vector para almacenar los elementos de la pila public: // Método para añadir un elemento a la pila void push(int x) { elementos.push_back(x); } // Método para comprobar si la pila está vacía bool isEmpty() { return elementos.empty(); } // Método para ver el elemento superior de la pila int top() { if (!isEmpty()) { return elementos.back(); } throw std::out_of_range("Pila vacía");
2.3.1 Representaciones y operaciones

2.3 Pilas y colas

Unidad 2. Estructuras de datos

Método top: int top(): devuelve el elemento que está en el tope de la pila sin eliminarlo. Antes de acceder al último elemento, comprueba si la pila está vacía para evitar errores. Método pop: void pop(): elimina el último elemento del vector, que es el tope de la pila. Antes de eliminar, verifica si la pila está vacía. Función main:
  • Creamos una instancia de Pila y usamos push para añadir elementos.
  • top muestra el último elemento añadido (30), y luego pop elimina este elemento.
  • Al llamar nuevamente a top, ahora muestra el elemento que está actualmente en el tope (20).
  • Este ejemplo ilustra una implementación básica pero funcional de una pila en C++. El uso de std::vector simplifica la gestión de memoria y permite una manipulación flexible de los elementos de la pila.

Explicación. Código ejemplo del uso de pilas en C++

Definición de la clase pila: Se ha utilizado std::vector<int> para almacenar los elementos de la pila. Un vector es una alternativa dinámica a un array que puede cambiar de tamaño.Método push: void push(int x): añade un elemento al final del vector, que actúa como el tope de la pila. Método isempty: bool isEmpty(): devuelve true si la pila (vector) está vacía. Es útil para evitar errores al intentar acceder a elementos en una pila vacía.

2.3 Pilas y colas

2.3.1 Representaciones y operaciones

Unidad 2. Estructuras de datos

std::cout << "La cola está vacía" << std::endl; return; } Nodo* temp = frente; frente = frente->siguiente; if (frente == nullptr) { final = nullptr; } delete temp; } // Método para mostrar el elemento en el frente de la cola int peek() { if (frente == nullptr) { std::cout << "La cola está vacía" << std::endl; return -1; // O manejar de otra manera } return frente->valor; } // Método para verificar si la cola está vacía bool isEmpty() { return frente == nullptr; } // Destructor para liberar la memoria ~Cola() { while (!isEmpty()) { dequeue(); } } };

Ejemplo. Uso de colas en C++

#include <iostream> struct Nodo { int valor; Nodo* siguiente; Nodo(int val) : valor(val), siguiente(nullptr) {} }; class Cola { private: Nodo* frente; // Apuntador al primer elemento de la cola Nodo* final; // Apuntador al último elemento de la cola public: Cola() : frente(nullptr), final(nullptr) {} // Método para añadir un elemento al final de la cola void enqueue(int valor) { Nodo* nuevoNodo = new Nodo(valor); if (final == nullptr) { frente = final = nuevoNodo; return; } final->siguiente = nuevoNodo; final = nuevoNodo;
2.3.1 Representaciones y operaciones

2.3 Pilas y colas

Unidad 2. Estructuras de datos

Explicación. Código ejemplo del uso de pilas en C++

Estructura nodo:Define un nodo básico para la cola, que almacena un valor y un apuntador siguiente hacia el siguiente nodo en la cola.Clase cola:Variables miembro: dos apuntadores, frente y final, que apuntan al primer y último nodo de la cola, respectivamente.
  • Enqueue(): añade un elemento al final de la cola. Si la cola está vacía, el nuevo nodo se convierte en el frente y el final de la cola. De lo contrario, se agrega al final y se actualiza el apuntador final.
  • Dequeue(): elimina el elemento del frente de la cola. Si la cola está vacía, se muestra un mensaje. De lo contrario, se elimina el nodo del frente y se actualiza el apuntador frente.
  • Peek(): devuelve el valor del elemento del frente sin eliminarlo. Si la cola está vacía, retorna un valor indicativo o maneja el caso como se desee.
  • IsEmpty(): Comprueba si la cola está vacía.
  • Destructor: libera la memoria de los nodos de la cola.

2.3 Pilas y colas

2.3.1 Representaciones y operaciones

Unidad 2. Estructuras de datos

El fragmento de código, se añaden elementos a la cola y luego se procesan y eliminan secuencialmente, demostrando el comportamiento FIFO de la cola. Este ejemplo proporciona una comprensión básica de cómo se pueden implementar y usar colas en C++. La cola aquí es dinámica y gestiona la memoria de manera eficiente, lo que la hace adecuada para una amplia gama de aplicaciones.

Ejemplo y explicación. Implementación de colas relacionado al ejemplo del uso de colas en C++

int main() { Cola cola; cola.enqueue(10); cola.enqueue(20); cola.enqueue(30); std::cout << "El frente de la cola es: " << cola.peek() << std::endl; while (!cola.isEmpty()) { std::cout << "Procesando: " << cola.peek() << std::endl; cola.dequeue(); } return 0;

2.3 Pilas y colas

2.3.1 Representaciones y operaciones

Unidad 2. Estructuras de datos

Colas Operaciones básicasEnqueue: añadir un elemento al final de la cola. Dequeue: eliminar y retornar el elemento del frente de la cola. Front: observar el elemento en el frente de la cola sin eliminarlo. Uso y aplicaciones Usadas en la planificación de tareas, simulaciones de espera, en buffers para el procesamiento de datos, y en la gestión de procesos en sistemas operativos.

Pilas Operaciones básicas:

  • Push: añadir un elemento al tope de la pila.
  • Pop: eliminar y retornar el elemento del tope.
  • Peek o Top: ver el elemento en el tope de la pila sin eliminarlo.
Uso y aplicaciones Utilizadas en algoritmos de backtracking, navegación (como la funcionalidad de deshacer), manejo de llamadas a funciones, y en la evaluación de expresiones matemáticas.