как сохранить значение в указателе с помощью функции? - PullRequest
0 голосов

Я делаю простой связанный список с c функциями класса. Элементы в этом списке не должны повторяться и должны располагаться по порядку. Функция find получает два параметра: доблесть, которую нужно найти, и указатель на сохранение узла, у которого она есть. Все идет хорошо, но указатель продолжает иметь значение nullptr, потому что не сохраняет текущий адрес памяти. Я не могу понять, почему мой указатель не указывает на текущий узел. Пожалуйста, помогите мне.

template <class T>
class simpleNode {
public:
    T data;
    simpleNode<T>* next = NULL;
    simpleNode(T newData) {
        data = newData;
    }
};

template <class T, class C>
class simpleLinkedListOnePointer {
public:
    simpleNode<T>* head;
    C comparator;
    simpleLinkedListOnePointer <T, C>() {
        head = NULL;
    }

    bool find(T x, simpleNode<T>*& p) {
        p = head;
        while (p && comparator(p->data, x))
            p = p->next;

        return p?true:false;
    }

    bool insert(T x) {

        simpleNode<T>* ptr;
        if (find(x, ptr)) {
            return false;
        }

        simpleNode<T>* ptrAdd = new simpleNode<T>(x);

        if (!ptr) {
            ptrAdd->next = head;
            head = ptrAdd;
            return true;
        }
        else {
            cout << "ESTE ES EL NODO APUNTADO POR PTR: " << ptr->data << endl;
            ptrAdd->next = ptr->next;
            ptr->next = ptrAdd;
            return true;
        }

    }
    bool remove(T x) {
        return 1;
    }
    void print() {
        simpleNode<T>* p = head;
        while (p) {
            cout << p->data << "->";

            p = p->next;
        }
        cout << endl;
    }
};```
...