Según he leido lo que quiere conseguir es una matriz irregular de nodos.
Si no es así , pido perdón.
Para crear una matriz irregular de nodos deberías usar lo siguiente.
Suponemos una estructura nodo , además está con typedef
nodo **nodos; //la matriz se llamara nodos, nodos[a][b] fila a columna b
//definimos el número de columnas o filas, según tu representación mental
//NUMA es el número que quieres
nodos = (nodo**)malloc(sizeof(nodo*)*NUMA);
//ahora creamos realmente los nodos
for(int i=0;i<NUMA;i++)
nodos[i]=(nodo*)malloc(sizeof(nodo)*NUMB);
//NUMB no tiene por que ser constante , podríamos haber puesto i por ejemplo para crear una matriz en forma triangular
La idea es esta:
Nodos
|------>Nodo1,nodo2,nodo3
|------>nodo4,nodo5
|------>nodo6
|------>Null
Nodos es un array de punteros a nodo, en este caso de 4 punteros,
además si te fijas es una matriz irregular puesto que no todas las filas tienen el mismo número de elementos.
Suerte.
PD: Luego tendrás que liberar TODO lo que has cogido