【发布时间】:2018-03-30 14:08:13
【问题描述】:
我正在尝试实现一个可以在 c++ 中迭代的 LinkedList。
因此,我创建了一个 Iterator 类,这样取消引用 Iterator 将返回第一个元素。然而,这并没有奏效。然后当我实例化一个新的 int LinkedList 并尝试通过取消引用 begin() 的结果来访问第一个元素时,我不会检索列表的第一个元素,而是一个 10 位数字,例如“1453755360”
我的节点类只是由两个右/左节点指针和一个数据变量组成
链表类
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;
};
这是我测试代码的地方
LinkedList<int> ll;
ll.push_tail(7);
ll.push_tail(9);
if (*(ll.begin()) == 9) {
cout << "pass" << endl;
} else {
cout << "returned : " << *(ll.begin()) << endl;
}
【问题讨论】:
-
使用你的链表的代码在哪里?
-
这几乎可以肯定是一个错误
-
这个
Node<T> newNode = Node<T>(input);将在作用域结束时被销毁。 -
我成功将元素推送到列表中,但我无法从迭代器中检索元素
-
不,绝对不是。使用调试器自己看看。
标签: c++ linked-list iterator