Задача «Уничтожение дублирующихся элементов в списке»

Реализовать функцию, убирающую дублирующиеся элементы в односвязном списке.

void slist_unique(SList *head, int (*cmp)(Pointer d1, Pointer d2));

Функция по указателю cmp сравнивает два элемента и возвращает 0, если они равны. Она используется для проверки на дубли. Например, для списка строк она будет реализована через strcmp.

Пример: список A->B->B->A->D->A->Q будет урезан до A->B->D->Q.

Протестировать реализацию с помощью assert для не менее двух различных функций сравнения.

Задача опирается на «Связанные списки».