如何添加到 2 路链表的第一个
how to add to the first of a 2-way 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++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 如何在 c++ 中比较 2 个链表并将匹配的数据放入另一个链表中
- 在链链表中手动插入第五个元素
- 在链表中的第 n 位插入显示分割错误
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- 仅显示链表的最后一个元素
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 创建了一个链表,但如何删除 c++ 中的"所有"节点
- C++链表最后一个元素的迭代器?
- 如何创建一个带有链表的程序,该链表会破坏第 n 个元素
- (C++)如何创建一个函数来接收两个排序的链表并返回出现在两个列表中的第三个元素列表
- 链表:最后一个指针不是NULL
- 如何添加到 2 路链表的第一个
- 在链表末尾添加并显示链表中的第一个值
- 如何在单个链表C++中找到链表的第一个值
- 删除单向链表最后一个元素的递归方法
- 使用递归在单个链表中查找第n到最后一个节点
- 用双链表构建一个学生列表队列