Я делаю простой связанный список с 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;
}
};```