Array de listas enlazadas en C/C++

Una array en C / C++ o en cualquier lenguaje de programación es una colección de elementos de datos similares almacenados en ubicaciones de memoria contiguas y se puede acceder a los elementos aleatoriamente utilizando índices de una array. Se pueden usar para almacenar la colección de tipos de datos primitivos como int, float, double, char, etc. de cualquier tipo en particular. Para agregarle, una array en C/C++ puede almacenar tipos de datos derivados como estructuras, punteros, etc. A continuación se muestra la representación gráfica de una array.

Array

Una lista enlazada es una estructura de datos lineal que consta de Nodes donde cada Node contiene una referencia al siguiente Node. Para crear una lista de enlaces, necesitamos un puntero que apunte al primer Node de la lista.

Enfoque: para crear una array de listas vinculadas a continuación se encuentran los requisitos principales:

  • Una array de punteros .
  • Para realizar el seguimiento de la array de punteros creada anteriormente, se necesita otro puntero que apunte al primer puntero de la array. Este puntero se llama puntero a puntero .

A continuación se muestra la representación pictórica de la array de listas enlazadas:

A continuación se muestra el programa C++ para implementar la array de lista enlazada:

C++

// C++ program to illustrate the array
// of Linked Lists
#include <iostream>
using namespace std;
  
// Structure of Linked Lists
struct info {
    int data;
    info* next;
};
  
// Driver Code
int main()
{
    int size = 10;
  
    // Pointer To Pointer Array
    info** head;
  
    // Array of pointers to info struct
    // of size
    head = new info*[size];
  
    // Initialize pointer array to NULL
    for (int i = 0; i < size; ++i) {
        *(head + i) = NULL;
    }
  
    // Traverse the pointer array
    for (int i = 0; i < size; ++i) {
  
        // To track last node of the list
        info* prev = NULL;
  
        // Randomly taking 4 nodes in each
        // linked list
        int s = 4;
  
        while (s--) {
  
            // Create a new node
            info* n = new info;
  
            // Input the random data
            n->data = i * s;
            n->next = NULL;
  
            // If the node is first
            if (*(head + i) == NULL) {
                *(head + i) = n;
            }
            else {
                prev->next = n;
            }
            prev = n;
        }
    }
  
    // Print the array of linked list
    for (int i = 0; i < size; ++i) {
        info* temp = *(head + i);
  
        // Linked list number
        cout << i << "-->\t";
  
        // Print the Linked List
        while (temp != NULL) {
            cout << temp->data << " ";
            temp = temp->next;
        }
  
        cout << '\n';
    }
  
    return 0;
}
Producción:

0-->    0 0 0 0 
1-->    3 2 1 0 
2-->    6 4 2 0 
3-->    9 6 3 0 
4-->    12 8 4 0 
5-->    15 10 5 0 
6-->    18 12 6 0 
7-->    21 14 7 0 
8-->    24 16 8 0 
9-->    27 18 9 0

Publicación traducida automáticamente

Artículo escrito por mohdanas1612 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *