Array Jagged o Array of Arrays en C con Ejemplos

Prerrequisito: Arrays en C

Un arreglo irregular es un arreglo de arreglos tales que los arreglos de miembros pueden ser de diferentes tamaños, es decir, podemos crear un arreglo 2-D pero con un número variable de columnas en cada fila. Este tipo de arrays también se conocen como arrays Jagged.

Ejemplo:

arr[][] = { {0, 1, 2},
            {6, 4},
            {1, 7, 6, 8, 9},
            {5} 
          };

A continuación se muestran los métodos para implementar la array irregular en C:

  1. Usando una array y un puntero ( Static Jagged Array)
    • Primero declare arrays 1-D con la cantidad de filas que necesitará,
    • El tamaño de cada arreglo (arreglo para los elementos en la fila) será el número de columnas (o elementos) en la fila,
    • Luego declare una array 1-D de punteros que contendrá las direcciones de las filas,
    • El tamaño de la array 1-D es la cantidad de filas que desea en la array irregular.

    A continuación se muestra la implementación del enfoque anterior:
    Ejemplo:

    // C program to show the
    // implementation of Jagged Arrays
      
    #include <stdio.h>
    #include <stdlib.h>
      
    int main()
    {
      
        int row0[4] = { 1, 2, 3, 4 };
        int row1[2] = { 5, 6 };
      
        int* jagged[2] = { row0, row1 };
      
        // Array to hold the size of each row
        int Size[2] = { 4, 2 }, k = 0;
      
        // To display elements of Jagged array
        for (int i = 0; i < 2; i++) {
      
            // pointer to hold the address of the row
            int* ptr = jagged[i];
      
            for (int j = 0; j < Size[k]; j++) {
                printf("%d ", *ptr);
      
                // move the pointer to the
                // next element in the row
                ptr++;
            }
      
            printf("\n");
            k++;
      
            // move the pointer to the next row
            jagged[i]++;
        }
      
        return 0;
    }
    Producción:

    1 2 3 4 
    5 6
    
  2. Usando una array de punteros (Dynamic Jagged Array)
    • Declarar una array de punteros (array irregular),
    • El tamaño de esta array será el número de filas requeridas en la array Jagged
    • Luego, para cada puntero en la array, asigne memoria para la cantidad de elementos que desea en esta fila.

    A continuación se muestra la implementación del enfoque anterior:
    Ejemplo:

    // C program to show the
    // implementation of Jagged Arrays
      
    #include <stdio.h>
    #include <stdlib.h>
      
    int main()
    {
        // 2 Rows
        int* jagged[2];
      
        // Allocate memory for elements in row 0
        jagged[0] = malloc(sizeof(int) * 1);
      
        // Allocate memory for elements in row 1
        jagged[1] = malloc(sizeof(int) * 3);
      
        // Array to hold the size of each row
        int Size[2] = { 1, 3 }, k = 0, number = 100;
      
        // User enters the numbers
        for (int i = 0; i < 2; i++) {
      
            int* p = jagged[i];
      
            for (int j = 0; j < Size[k]; j++) {
                *p = number++;
      
                // move the pointer
                p++;
            }
            k++;
        }
      
        k = 0;
      
        // Display elements in Jagged array
        for (int i = 0; i < 2; i++) {
      
            int* p = jagged[i];
            for (int j = 0; j < Size[k]; j++) {
      
                printf("%d ", *p);
                // move the pointer to the next element
                p++;
            }
            printf("\n");
            k++;
            // move the pointer to the next row
            jagged[i]++;
        }
      
        return 0;
    }
    Producción:

    100 
    101 102 103
    

Publicación traducida automáticamente

Artículo escrito por salmaaashraf2000 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 *