¿Cómo modificar los datos del nodo? Estoy tratando de modificar el contenido de datos del nodo principal o de cualquier otro nodo, pero no puedo hacerlo.

#include <stdio.h>
#include <stdlib.h>
struct Node
{
    int data;
    struct Node *next;
};
void traverseList(struct Node *ptr)
{
    while (ptr != NULL)
    {
        printf("element is:%d\n", ptr->data);
        ptr = ptr->next;
    }
}
int main()
{
    struct Node *head;
    struct Node *second;
    struct Node *third;
    head = (struct Node *)malloc(sizeof(struct Node));
    second = (struct Node *)malloc(sizeof(struct Node));
    third = (struct Node *)malloc(sizeof(struct Node));

    head->data = 7;
    head->next = second;
    second->data = 122;
    second->next = third;
    third->data = 34;
    third->next = NULL;

    traverseList(head);
    
    free(head);
    free(second);
    free(third);
    return 0;
}

Necesito saber cómo modificar los datos del nodo del nodo principal.

-1
satyam pandey 23 ene. 2021 a las 10:01

1 respuesta

La mejor respuesta

Puede escribir una función que cambie datos en el nodo en el índice (también conocido como posición) N en la lista. Si el primer elemento está en el índice cero, podría verse así:

int update_at(struct Node *ptr, unsigned idx, int data)
{
    while (ptr != NULL && idx > 0)
    {
        ptr = ptr->next;
        --idx;
    }
    if (ptr == NULL) return -1; // Node not found
    ptr->data = data;
    return 0;
}

Y llámalo como

if (update_at(head, 1, 42))  // Update node at index 1
{
    // Update failed - add some error handling
    ...
}
2
4386427 23 ene. 2021 a las 08:06