遍历双向链表并在其末尾插入(C ++)

时间:2016-11-11 12:48:01

标签: c++ list insert

我必须面对这个问题:我有一个双重链表,我必须在尾部插入。我的列表由 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:我当然会使用尾指针,但目的是遍历列表。

非常感谢任何反馈。

0 个答案:

没有答案