Jak nie chce się skompilować, to podaj chociaż treść błędu.
kurs *r = new kurs;
r = NULL;
Po co to new, skoro w następnej linii zerujesz wskaźnik r?
Odwołujesz się w funkcjach do zmiennych head i tail, choć nigdzie nie są zdefiniowane (tzn. są, ale jako pola struktury Kurs). Hint: r->head i r->tail.
Co, według Ciebie, funkcja wyswietl ma wyświetlić?