0% encontró este documento útil (0 votos)
43 vistas2 páginas

Texto

Cargado por

al222310320
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas2 páginas

Texto

Cargado por

al222310320
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

#include <iostream>

using namespace std;

// Definición de la estructura Nodo


struct Nodo {
int dato;
Nodo *siguiente;
};

// Función para determinar si la cola está vacía


bool colaVacia(Nodo *frente) {
return frente == nullptr;
}

// Función para insertar elementos en una cola


void insertarCola(Nodo *&frente, Nodo *&fin, int n) {
Nodo *nuevoNodo = new Nodo(); // Crear un nuevo nodo
nuevoNodo->dato = n;
nuevoNodo->siguiente = nullptr;

if (colaVacia(frente)) {
frente = nuevoNodo; // Si la cola está vacía, frente apunta al nuevo nodo
} else {
fin->siguiente = nuevoNodo; // Si no, el último nodo apunta al nuevo nodo
}
fin = nuevoNodo; // El fin siempre se actualiza al nuevo nodo

cout << "Elemento " << n << " insertado en la cola.\n";


}

// Función para eliminar elementos de la cola


void eliminarCola(Nodo *&frente, Nodo *&fin) {
if (colaVacia(frente)) {
cout << "La cola está vacía. No hay elementos para eliminar.\n";
return;
}

int eliminado = frente->dato; // Obtener el valor del nodo en el frente


Nodo *temp = frente; // Guardar el nodo que será eliminado
frente = frente->siguiente; // Avanzar el frente al siguiente nodo

if (frente == nullptr) {
fin = nullptr; // Si la cola queda vacía, fin también se pone en nullptr
}

delete temp; // Liberar la memoria del nodo eliminado


cout << "Elemento " << eliminado << " eliminado de la cola.\n";
}

// Función para mostrar todos los elementos de la cola


void mostrarCola(Nodo *frente) {
if (colaVacia(frente)) {
cout << "La cola está vacía.\n";
return;
}

cout << "Elementos en la cola: ";


while (frente != nullptr) {
cout << frente->dato << " ";
frente = frente->siguiente;
}
cout << endl;
}

int main() {
Nodo *frente = nullptr;
Nodo *fin = nullptr;
int opcion, dato;

while (true) {
// Menú sencillo
cout << "\n--- Menú de Cola ---\n";
cout << "1. Insertar elemento\n";
cout << "2. Eliminar elemento\n";
cout << "3. Mostrar cola\n";
cout << "4. Salir\n";
cout << "Seleccione una opción: ";
cin >> opcion;

if (opcion == 1) {
cout << "Ingrese un número para insertar: ";
cin >> dato;
insertarCola(frente, fin, dato);
} else if (opcion == 2) {
eliminarCola(frente, fin);
} else if (opcion == 3) {
mostrarCola(frente);
} else if (opcion == 4) {
cout << "Saliendo...\n";
break;
} else {
cout << "Opción no válida. Intente de nuevo.\n";
}
}

// Liberar memoria al finalizar el programa


while (!colaVacia(frente)) {
eliminarCola(frente, fin);
}

return 0;
}

También podría gustarte