J'essaie d'implémenter une LinkedList qui peut être itérée en C++.Le pointeur d'itérateur ne fait pas référence au premier élément
J'ai donc créé une classe Iterator, de sorte que déréférencer un Iterator retournerait le premier élément. Cependant, cela n'a pas fonctionné. Quand j'instancie alors un nouvel int LinkedList et que j'essaie d'accéder au premier élément en déréférenciant le résultat de begin(), je ne récupère pas le premier élément de la liste, mais un numéro à 10 chiffres tel que '1453755360'
classe de noeud est juste composé de deux pointeurs de noeuds droite/gauche et une variable de données
classe LinkedList
template <typename T>
class LinkedList{
public:
LinkedList(){
count =(0);
head =(nullptr);
tail =(nullptr);
}
void push_head(T input){
Node<T> newNode = Node<T>(input);
newNode.left = nullptr;
newNode.right = head;
head = &newNode;
count++;
}
T front(){
T& data = (head->data);
return data;
}
void push_tail(T input){
Node<T> newNode = Node<T>(input);
newNode.right = tail;
newNode.left = nullptr;
tail = &newNode;
count++;
}
T back(){
T& data = (tail->data);
return data;
}
Iterator<T> begin(){
Iterator<T> test = Iterator<T>(head);
return test;
}
private:
int count;
Node<T> *head;
Node<T> *tail;
};
Voici où je teste le code
LinkedList<int> ll;
ll.push_tail(7);
ll.push_tail(9);
if (*(ll.begin()) == 9) {
cout << "pass" << endl;
} else {
cout << "returned : " << *(ll.begin()) << endl;
}
Où est le code qui utilise votre liste chaînée? –
Ceci est presque certainement une erreur d'un seul. – RH6
Ce 'Noeud nouveauNode = Noeud (entrée);' sera détruit lorsque la portée se termine. –
alain