我必须面对这个问题:我有一个双重链表,我必须在尾部插入。我的列表由 Node 组成,例如
struct Node {
int val; // contains the value
Node * next; // pointer to the next element in the list
Node * prev; // pointer to the previous element in the list
};
并且我的班级列表仅声明
private:
Node * first; // Pointer to the first (if any) element in the list
起初。
现在,我写了一个插入方法:
void List::insert(int n){
Node * tmp = new Node;
tmp->val = n;
tmp->next = 0;
if (!first) {
first = tmp;
}
else {
Node * p = new Node;
p = first;
while (p->next) {
p = p->next;
}
p->next = tmp;
tmp->prev = p;
}
};
如果我从cin中取几个数字(例如,1 2 3 4),我会调用 insert ,但最终我没有所有想要存储的元素。我只有第一个和 tmp ,其中包含输入中的最后一个数字(例如4)。
我很难弄清楚出了什么问题 - 我的第一个建议是变量范围。 或者在指针设置期间有什么问题吗?
OBS:我当然会使用尾指针,但目的是遍历列表。
非常感谢任何反馈。