c++ - 如何添加到双向链表的第一个?

标签 c++ doubly-linked-list

我正在尝试使用类在 C++ 中创建一个双向链表,但我遇到了一个恼人的问题,无法将节点添加到列表的第一个!
这是 Node 类:

class node{
public:
    node(int d = 0, node *p = NULL, node *n = NULL):data(d), pre(p), next(n){}

    void setPrevious(node *p){this->pre = p;}
    void setNext(node *n){this->next = n;}
    void setData(int d){this->data = d;}

    int data;
    node *pre, *next;

};

这是我创建第一个节点的方式:

node *head = new node(), *current = new node(), *last = new node();
cout<<msg_data;
// 'd' is an Integer variable
cin>>d;
current->setData(d);
head = new node(0, 0, current);

这就是我尝试将节点添加到列表第一个的方式:

cout<<"enter 'data' for list: ";
// 'd' is an Integer variable
cin>>d;
node *tmp = new node(d, 0, head);
head = tmp;

当我想首先添加节点时,它会在值后为“数据”添加“0”!前任。我想将“21”添加到列表的第一个,但它向列表添加了 21 和 0!

最佳答案

两个观察:

查看创建第一个节点的代码,它创建的不是一个节点,而是四个节点。看来你完全误解了什么。在纸上画出列表的外观,您就会明白。

将额外节点添加到列表第一个节点的代码似乎没问题。

关于c++ - 如何添加到双向链表的第一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316568/

相关文章:

使用 DLL 的循环队列,全局声明的指针未正确初始化

java - 双向链表中给定节点之间的反向链表 - 算法

c++ - 在映射 C++ 中存储对象引用

c++ - 隐式提升以避免 std::partial_sum 溢出

c++ - xcode 中的子文件夹。链接

java - 如何将对象添加到链表中?

c++ - 如何理解 C++ 中的 std::distance?

c++ - 什么先来 - 模板实例化与宏扩展?

python - 将 n 个值插入一个空的双向链表(伪代码)

java - 双向链表上的快速排序