Escriba una función para contar el número de Nodes en una lista enlazada simple dada.
Por ejemplo, la función debería devolver 5 para la lista enlazada 1->3->1->2->1.
Solución iterativa:
1) Initialize count as 0 2) Initialize a node pointer, current = head. 3) Do following while current is not NULL a) current = current -> next b) count++; 4) Return count
A continuación se muestra la implementación iterativa del algoritmo anterior para encontrar el recuento de Nodes en una lista de enlaces individuales dada.
C++
// Iterative C++ program to find length // or count of nodes in a linked list #include <bits/stdc++.h> using namespace std; // Link list node class Node { public: int data; Node* next; }; /* Given a reference (pointer to pointer) to the head of a list and an int, push a new node on the front of the list. */ void push(Node** head_ref, int new_data) { // Allocate node Node* new_node =new Node(); // Put in the data new_node->data = new_data; // Link the old list off the // new node new_node->next = (*head_ref); // Move the head to point to // the new node (*head_ref) = new_node; } // Counts no. of nodes in linked list int getCount(Node* head) { // Initialize count int count = 0; // Initialize current Node* current = head; while (current != NULL) { count++; current = current->next; } return count; } // Driver code int main() { // Start with the empty list Node* head = NULL; // Use push() to construct list // 1->2->1->3->1 push(&head, 1); push(&head, 3); push(&head, 1); push(&head, 2); push(&head, 1); // Check the count function cout << "count of nodes is " << getCount(head); return 0; } // This is code is contributed by rathbhupendra
Producción:
count of nodes is 5
Complejidad de tiempo: O(n), donde n representa la longitud de la lista enlazada dada.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.
Solución recursiva:
int getCount(head) 1) If head is NULL, return 0. 2) Else return 1 + getCount(head->next)
A continuación se muestra la implementación recursiva del algoritmo anterior para encontrar el recuento de Nodes en una lista de enlaces simples dada.
C++
// Recursive C++ program to find length // or count of nodes in a linked list #include <bits/stdc++.h> using namespace std; // Link list node class Node { public: int data; Node* next; }; /* Given a reference (pointer to pointer) to the head of a list and an int, push a new node on the front of the list. */ void push(Node** head_ref, int new_data) { // Allocate node Node* new_node = new Node(); // Put in the data new_node->data = new_data; // Link the old list off the // new node new_node->next = (*head_ref); // Move the head to point to // the new node (*head_ref) = new_node; } // Recursively count number of // nodes in linked list int getCount(Node* head) { // Base Case if (head == NULL) { return 0; } // Count this node plus the rest // of the list else { return 1 + getCount(head->next); } } // Driver code int main() { // Start with the empty list Node* head = NULL; // Use push() to construct list // 1->2->1->3->1 push(&head, 1); push(&head, 3); push(&head, 1); push(&head, 2); push(&head, 1); // Check the count function cout << "Count of nodes is " << getCount(head); return 0; } // This is code is contributed by rajsanghavi9
Producción:
Count of nodes is 5
Complejidad de tiempo: O(n), donde n representa la longitud de la lista enlazada dada.
Espacio auxiliar: O(n), para pila recursiva donde n representa la longitud de la lista enlazada dada.
¡ Consulte el artículo completo sobre Buscar la longitud de una lista vinculada (iterativa y recursiva) para obtener más detalles!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA