#include <iostream>
// Definición de la estructura del nodo
struct Nodo {
int dato;
Nodo* siguiente;
};
// Función para insertar un nodo al final de la lista circular
void insertarNodo(Nodo*& cabeza, int dato) {
Nodo* nuevoNodo = new Nodo;
nuevoNodo->dato = dato;
if (cabeza == nullptr) {
cabeza = nuevoNodo;
nuevoNodo->siguiente = cabeza;
} else {
Nodo* temp = cabeza;
while (temp->siguiente != cabeza) {
temp = temp->siguiente;
}
temp->siguiente = nuevoNodo;
nuevoNodo->siguiente = cabeza;
}
}
// Función para mostrar los nodos de la lista circular
void mostrarLista(Nodo* cabeza) {
if (cabeza == nullptr) {
std::cout << "La lista está vacía." << std::endl;
return;
}
Nodo* temp = cabeza;
do {
std::cout << temp->dato << " ";
temp = temp->siguiente;
} while (temp != cabeza);
std::cout << std::endl;
}
// Función para modificar el dato de un nodo en la lista circular
void modificarNodo(Nodo* cabeza, int posicion, int nuevoDato) {
if (cabeza == nullptr) {
std::cout << "La lista está vacía." << std::endl;
return;
}
Nodo* temp = cabeza;
int contador = 0;
do {
if (contador == posicion) {
temp->dato = nuevoDato;
std::cout << "Dato modificado exitosamente." << std::endl;
return;
}
temp = temp->siguiente;
contador++;
} while (temp != cabeza);
std::cout << "La posición especificada no existe en la lista." << std::endl;
}
int main() {
Nodo* cabeza = nullptr;
// Insertar nodos en la lista circular
insertarNodo(cabeza, 10);
insertarNodo(cabeza, 20);
insertarNodo(cabeza, 30);
// Mostrar la lista circular
std::cout << "Lista circular: ";
mostrarLista(cabeza);
// Modificar un nodo en la lista circular
modificarNodo(cabeza, 1, 25);
// Mostrar la lista circular después de la modificación
std::cout << "Lista circular después de la modificación: ";
mostrarLista(cabeza);
return 0;
}