Здесь:
list_node_t **array[10] = {NULL};
Вы объявляете массив из 10 указателей на указатели на вашу структуру. Вам нужен массив из 10 указателей на структуру:
list_node_t *array[10] = {NULL};
Это сбивает с толку, потому что да, array
действительно является указателем на указатель, но обозначение в квадратных скобках абстрагирует это для вас в C, и поэтому вы должны думать о array
как о просто массиве указателей.
Вам также не нужно использовать оператор разыменования в этой строке:
*array[0] = (list_node_t*) malloc(sizeof(list_node_t));
Потому что C разыменовывает его для вас с помощью обозначения в скобках. Так и должно быть:
array[0] = (list_node_t*) malloc(sizeof(list_node_t));