Po pierwsze, do funkcji musisz przekazać nie wskaźnik do listy, a adres wskaźnika do niej. Taki wskaźnik na wskaźnik :) Dlaczego tak? Ponieważ w Twojej obecnej funkcji działasz na kopii tego wskaźnika. To tak, jakbyś napisał coś takiego:
void zmien(int x)
{
x = 10;
}
int main()
{
int liczba = 1;
zmien(liczba);
printf("%d", liczba); //wypisze 1
}
W powyższym przykładzie musiałbyś podać wskaźnik do tej zmiennej i poprzez ten wskaźnik zmienić wartość zmiennej, czyli funkcja musiałaby wyglądać w ten sposób
void zmien(int* x)
{
*x = 10;
}
a wywołanie
zmien(&liczba);
Tak samo w przypadku twojej funkcji. Jej deklaracja powinna wyglądać tak: void insert(node**, int); W niej operujesz na wskaźniku tak jak na powyższym przykładzie, np. *head = ptr; Nie zapomnij też o poprzedzeniu zmiennej ampersandem przy wywołaniu funkcji: insert(&myList, i);
Po drugie, to co napisał Vim - musisz najpierw przejść do końca listy, a potem dodać element.