Intanto non devi chiamare tutto quello che ti capita

data

altrimenti non si capisce nulla.

Ad esempio, potresti chiamare il tipo di dato, nodo

codice:
typedef struct data 
{ 
  int value; 
  struct data *next; 
} nodo;
Poi, se vuoi usare un puntatore puoi chiamarlo

parray

e se deve essere un doppio puntatore (perche'?) allora dovrai scrivere (nota il sizeof)

nodo **parray = (nodo **)calloc(3, sizeof(nodo *));

e in seguito, allocare ogni puntatore con

parray[i] = (nodo *)calloc(1, sizeof(nodo));

per un array 3x1 ... ma il seguito del programma non si capisce ...