Una lista enlazada es una colección lineal de elementos de datos, en la que cada Node apunta al siguiente Node. A diferencia de una array, no tiene un límite superior y, por lo tanto, es extremadamente útil.
La tarea es acceder al valor de cada Node de la lista vinculada e invertirlos.
Ejemplos:
Input : 56 87 12 49 35 Output :65 78 21 94 53 Input : 128 87 12433 491 33 Output :821 78 33421 194 33
Algoritmo:
la tarea se puede lograr como:
- Atraviese linealmente cada Node de la lista enlazada individualmente.
- Invierte el valor de cada Node.
- Almacene el valor invertido en el Node actual.
// C program to reverse every node data in // singly linked list. #include <stdio.h> #include <stdlib.h> // A linked list node struct Node { int data; struct Node* next; }; // newNode function inserts the new node at // the right side of linked list struct Node* newNode(int key) { struct Node* temp = new Node; temp->data = key; temp->next = NULL; return temp; } // reverse() will receive individual data item // from reverseIndividualData() and will return // the reversed number to calling function int reverse(int number) { int new_num = 0, rem; while (number != 0) { rem = number % 10; new_num = new_num * 10 + rem; number = number / 10; } return new_num; } void reverseIndividualData(struct Node* node) { if (node == NULL) return; while (node != NULL) { /* function call to reverse(), reverseIndividualData(struct Node *node) will send the one data item at a time to reverse(node->data) function which will return updated value to node->data*/ node->data = reverse(node->data); /* updating node pointer so as to get next value */ node = node->next; } } // Function to print nodes in linked list void printList(struct Node* node) { while (node != NULL) { printf("%d ", node->data); node = node->next; } } // Driver program to test above functions int main() { struct Node* head = NULL; head = newNode(56); head->next = newNode(87); head->next->next = newNode(12); head->next->next->next = newNode(49); head->next->next->next->next = newNode(35); printf("\nList before reversing individual data item \n"); printList(head); reverseIndividualData(head); printf("\nList after reversing individual data item\n"); printList(head); return 0; }
Producción:
List before reversing individual data item 56 87 12 49 35 List after reversing individual data item 65 78 21 94 53
Publicación traducida automáticamente
Artículo escrito por AmishTandon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA