Удаление одинаковых элементов в списке. С++

У меня есть односвязный список, данными которого являются строки. Мне нужно удалить из списка все одинаковые строки, то есть, например есть список (сова, лис, гриб, лис, нос, нос) нужно получить (сова, гриб). Я пыталась реализовать функцию, но пока что могу удалять последние схожие вхождения и то, иногда программа крашится. Помогите мне доделать мой код, пожалуйста, после завтра уже нужно сдать работу, а у мене 0 идей, как доделать эту функцию....Вот мой код:

void delRepeat(TString *&Start){
TString *wp = Start, *pp, *pdp = Start;
while(wp->next!=NULL){
    pp = wp->next;
    while(pp!=NULL){
        if(wp->str==pp->str){
            while(pdp&&pdp->next!=pp){
                pdp = pdp->next;
            }
            pdp->next = pp->next;
            delete pp;
        }
        pp = pp->next;
    }
    wp = wp->next;
}
}

Ответы (0 шт):