This is my first C program and the use of a linked list is new to me. The problem with this one is that it has to have pointers stored in a two dimensional array which at a later point will be pointing to different linked lists depending on what is been read from a file into the program. I can use an array fine as far as I know but the examples of linked lists I have seen so far don't quite fit with this specific task I want to accomplish. I have a program fragment which I have been trying to get to work but its very possible that I'm missing some very simple things that prevent it from working, I can compile it but it crashes everytime I run it.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

struct record {
char item[15];
struct record *link;
};

typedef struct record item_node;


typedef struct {
int length;
item_node *list;
} data_type;

data_type infotable[3][3] = {{{0,NULL}, {32,NULL} {99,NULL} },
{ {32,NULL}, {0,NULL}, {86,NULL} },
{ {99,NULL}, {86,NULL}, {0,NULL} } };


list_node *new_list;




int main()
{

strcpy(infotable[0][1].list->item,"item1");

infotable[0][1].list->link = NULL;

strcpy(new_item->item,"item2");

new_item->link=infotable[0][1].list;

infotable[0][1].list=new_item;

return 0;
}

I believe that this program is meant to provide an array (this is a temp array made to get this program fragment to work) with null elements that can be changed to pointers to linked lists, the lines of code in main are examples of how 2 itesm can be added to the array at [0][1]. I must be missing some important things since this program wont run at all, I cant actually compile the program with the malloc lines in either and im not too sure why, I havent looked into how to print the list from the array yet either.