while(a != NULL)
{
a = start;
start = a -> link;
free(a);
}
должно быть
while(start != NULL)
{
a = start;
start = a -> link;
free(a);
}
и, конечно, a = start;
перед тем, как бесполезно
{edit}
дополнительное замечание, чтобы сделать if(j==2) { a -> link = NULL; }
Это плохой выбор, потому что сразу после того, как вы снова протестируете значение j , и если вам нужно изменить количество циклов, вам нужно будет сделать 2 изменения.Лучше удалить его и добавить a -> link = NULL;
непосредственно после цикла (тест не требуется)