es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecución hasta cierto valor en una lista enlazada.

Quiero sumar los nodos hasta llegar a 0 y actualizar la lista enlazada original con los nuevos valores.

Nota: se salta los 0 hasta llegar a un número para calcular la suma o hasta el final de la lista enlazada.

Definición de nodo:

struct Node {
int data;
Node* next;
};

void updateLinkedList(Node* head)
{
Node* currentNode = head;

int temp = 0;
int sum = 0;

while (currentNode != NULL)
{
temp = currentNode->data;

while(temp != 0)
{
    sum = sum + currentNode->data;
    currentNode = currentNode->next;
}

}
}

Estoy intentando hacer lo siguiente:

Entrada del usuario en la lista enlazada:

1 2 0 5 3 0 4

Lista enlazada actualizada:

3 8 4

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para sumar los nodos hasta que se llegue a 0 y actualizar la lista vinculada original con los nuevos valores, puede modificar el código dado de la siguiente manera:

    “`c++
    void actualizarListaVinculada(Nodo* cabeza)
    {
    Nodo* nodoActual = cabeza;
    int suma = 0;
    while (nodoActual != NULL)
    {
    if (nodoActual->dato != 0) // si el nodo no tiene valor 0
    {
    suma += nodoActual->dato; // agregar el valor del nodo a la suma
    }
    else // si el nodo tiene valor 0
    {
    // actualizar los nodos anteriores con la suma
    Nodo* nodoActualizar = nodoActual->siguiente;
    while (nodoActualizar != NULL && nodoActualizar->dato != 0) // hasta que se encuentre el siguiente nodo 0
    {
    nodoActualizar->dato += suma;
    nodoActualizar = nodoActualizar->siguiente;
    }
    suma = 0; // reiniciar la suma para la siguiente secuencia
    }
    nodoActual = nodoActual->siguiente;
    }
    }


    Luego puede llamar a esta función con la lista vinculada de entrada 1 2 0 5 3 0 4, que modificará la lista vinculada de la siguiente manera:

    Lista Vinculada Original: 1 -> 2 -> 0 -> 5 -> 3 -> 0 -> 4 -> NULL
    Lista Vinculada Actualizada: 3 -> 8 -> 4 -> NULL
    “`

    La primera secuencia con los valores 1, 2, 0 se actualiza con la suma 3, la siguiente secuencia con los valores 5, 3, 0 se actualiza con la suma 8 y la secuencia final con el valor 4 se actualiza con la suma 4. Los nodos con valor 0 se omiten en el cálculo de la suma y la actualización.

Comments are closed.