Найти и удалить повторяющиеся несколько раз элементы в стеке и найти количество оставшихся

мне нужно найти и удалить повторяющиеся несколько раз элементы в стеке и найти количество оставшихся. функция не работает, как ее исправить?

PushStack - добавление элемента в стек TopToTo - дополнительная процедура перекладывания элемента из одного стека в другой

TElem* Decide(TElem** PSt1, TElem* St2) {
    TElem* St1 = *PSt1, * Dop = NULL;
    St2 = FreeStack(St2);

    int N = 0;

    while (St1) {
        St2 = PushStack(St2, St1->data);
        TopToTop(&St1, &Dop);
        if (St1->data == St2->data) {
            delete St1;
            delete St2;
        }
        else TopToTop(&St1, &Dop);
        N++;
    }
    while (Dop) TopToTop(&Dop, &St1);

    if (N) printf("Количество оставшихся\n",  N);
    else printf("Стек пуст\n");

    printf("Press any key to continue");
    getch();
    *PSt1 = St1; 
    return St2;  
}

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