-
Notifications
You must be signed in to change notification settings - Fork 0
/
practica_49.cpp
67 lines (58 loc) · 1.69 KB
/
practica_49.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
// Definición de la estructura Nodo
struct Nodo {
int dato;
Nodo* siguiente;
};
// Función para crear un nuevo nodo
Nodo* crearNodo(int valor) {
Nodo* nuevoNodo = new Nodo;
nuevoNodo->dato = valor;
nuevoNodo->siguiente = nullptr;
return nuevoNodo;
}
// Función para insertar un elemento en la cola
void encolar(Nodo*& frente, Nodo*& final, int valor) {
Nodo* nuevoNodo = crearNodo(valor);
if (final == nullptr) {
frente = final = nuevoNodo;
} else {
final->siguiente = nuevoNodo;
final = nuevoNodo;
}
}
// Función para eliminar y obtener el elemento del frente de la cola
int desencolar(Nodo*& frente, Nodo*& final) {
if (frente == nullptr) {
std::cerr << "La cola está vacía." << std::endl;
return -1; // Valor de error
}
int valor = frente->dato;
Nodo* temp = frente;
frente = frente->siguiente;
if (frente == nullptr) {
final = nullptr; // Si se elimina el último elemento, actualizar 'final'
}
delete temp;
return valor;
}
// Función para verificar si la cola está vacía
bool isEmpty(Nodo* frente) {
return frente == nullptr;
}
int main() {
Nodo* frente = nullptr;
Nodo* final = nullptr;
// Encolar elementos
encolar(frente, final, 10);
encolar(frente, final, 20);
encolar(frente, final, 30);
std::cout << "Elementos en la cola:" << std::endl;
while (!isEmpty(frente)) {
// Desencolar y mostrar el elemento del frente de la cola
int valor = desencolar(frente, final);
std::cout << valor << " ";
}
std::cout << std::endl;
return 0;
}