C/Visual C - Ayuda sobre listas circulares

 
Vista:

Ayuda sobre listas circulares

Publicado por Juan Camilo Manco C. (2 intervenciones) el 05/06/2001 23:05:59
Por favor, necesito un codigo en el cual se me muestre un ejemplo de una lista circular y en este, la forma de declarar los nodos, la forma de ingresar y/o modificar informacion de los nodos.

ES URGENTE! ! ! ! ! ! ! !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ejemplo de lista circular en C++: Declaración, inserción y modificación de nodos

Publicado por Alejandro (913 intervenciones) el 25/09/2024 23:39:45
¡Entendido! Aquí tienes un ejemplo de código en C++ que muestra cómo declarar una lista circular, así como cómo ingresar y modificar información en los nodos:

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#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;
}

Este código muestra cómo declarar una lista circular utilizando una estructura de nodo. La función `insertarNodo` se encarga de insertar un nuevo nodo al final de la lista circular. La función `mostrarLista` muestra los nodos de la lista circular. La función `modificarNodo` permite modificar el dato de un nodo en la lista circular, especificando la posición del nodo y el nuevo dato.

Espero que este ejemplo te sea útil para entender cómo trabajar con una lista circular en C++. ¡Buena suerte, Juan!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar