Tableau dynamic 2D (en C) avec un numéro de ligne spécifique et une taille de colonne différente dans chaque ligne

Comment créer un tableau dynamic en 2D (en C) avec un numéro de ligne spécifique et une taille de colonne différente dans chaque ligne?

Par exemple: Ceci est un tableau (3 = lignes)

|1 | 4 | 5 | |3 | |6 | 2 | 

1ère rangée – 3 colonnes

2e rangée – 1 colonne

3ème rangée – 2 colonnes

Je veux que mon programme en cours d’exécution demande à l’utilisateur pour chaque ligne de donner le nombre de cols. Comment créer un tableau comme celui-ci?

Si vous voulez quelque chose de dynamic et ne vous souciez pas du temps d’access constant, vous pouvez créer un tableau de liste chaînée, sinon vous n’avez pas d’autre choix que d’allouer de l’espace avec suffisamment de mémoire et de le maintenir à jour avec realloc.

Vous voudrez probablement utiliser un pointeur et allouer suffisamment de mémoire pour chaque ligne. Exemple:

 int ** array = calloc(sizeof(*array), NUMROWS); array[0] = calloc(sizeof(**array), 3); // 3 fields array[1] = calloc(sizeof(**array), 1); // 1 field array[2] = calloc(sizeof(**array), 2); // 2 fields 

Vous avez besoin d’un tableau de pointeurs:

 int *ptr_array[3]; 

Ensuite, pour chaque ligne, vous devez atsortingbuer de la mémoire:

 int map_array[3] = {3,1,2} int i; for(i = 0; i < 3; i++){ ptr_array[i] = malloc(sizeof(int)*map_array[i]); } 

Si vous souhaitez que le nombre de lignes soit dynamic, vous devez faire la première partie comme suit:

 int **ptr_ptr_array; (*ptr_ptr_array) = malloc(sizeof(int *)*3); 

Bonne chance pour recycler la mémoire.