C++链表将新节点添加到列表的开头
C++ linked list adding a new node to the beginning of the list
我正在努力如何将我正在创建的新节点链接到链表的其余部分。
template <class T>
void LinkedList<T>::addBeg(T value)
{
ListNode *nodePtr = head;
head = nodePtr->next;
head = nodePtr;
nodePtr = new ListNode(value);
}
我知道我在这里做错了什么:新值根本没有与链表相关联。
我想我知道我需要做什么。我很确定我需要做的是创建新值,插入到现有列表的开头,然后将 head 重新定义为新创建的值。
我遇到的问题是我不知道该怎么做。
所以,我认为我需要做的(至少在逻辑上)是设定的
*nodePtr = new Listnode(value);
然后设置
nodePtr = head;
然后设置
head = nodePtr-> next;
,然后设置
new ListNode(value) = head;
我走在正确的轨道上吗?我无法摆脱这种唠叨的感觉,即我没有正确将新的ListNode链接到现有列表,并且我无法弄清楚我是否在做错误的步骤或是否遗漏了一步。
若要在列表的头部创建新节点,请执行以下步骤
- 创建一个保存您的值的临时节点
- 将临时节点的旁边设置为指向头部
- 将头部设置为临时
您首先必须创建一个新节点,然后将其链接到当前头部。然后,将引用从以前的头切换到新创建的节点。
ListNode *newHead = new ListNode;
newHead->next = head;
head = newHead;
仔细考虑你拥有什么以及你需要做什么:
- 您有两个关心的节点:当前
head
和新nodePtr
。 - 您希望
nodePtr->next
指向当前头部,并将头更新为指向nodePtr
,以便这是列表中的第一个节点。
你做事的顺序很重要:如果你在nodePtr->next
指向以前的值之前分配新的值head
,你将失去整个列表!因此:
- 创建新节点
nodePtr
. nodePtr->next
指向头。- 将头指向
nodePtr
你走错路了。解决方案是创建新节点,将下一个节点链接到 head,然后将 head 引用到新节点:
template <class T>
void LinkedList<T>::addBeg(T value)
{
ListNode *nodePtr = new ListNode(value);
nodePtr->next = head;
head = nodePtr;
}
如果你
说nodePtr = head;
那么你只是覆盖了你刚刚做的指针。你想改变nodePtr->next = head; head = nodePtr;
相关文章:
- 如何在 sqlite3 中的表中添加整数列表
- 有什么方法可以将元素添加到列表中,如图所示?
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 将新元素添加到列表中,并返回对该元素的引用?
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- CSUF EPP - 你有什么想法(在添加到链接列表末尾时遇到麻烦)
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 如何使用LLVM C++API向保留节点列表添加
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 如何确保我的节点被添加到链接列表中
- 如何读取文件的内容,如果文件中的单词重复,请将它们添加到列表中?
- 在 MFC 组合框中设置文本,而不将其添加到列表中
- 在C++中,如何将参数添加到"Args&&... args"参数列表中?
- C++将静态多态类自添加到子类的 constexpr 列表中
- 添加气泡排序代码以排列列表
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 如何从列表中将对象添加到图表中?
- 在运行时添加列表和从列表中删除
- MFC应用程序在添加列表控件元素时卡住