在C++中修改链表
Modifying Linked Lists in C++
我正试图编写一个函数,在任何位置将节点添加到链表中。
这就是我目前所拥有的:
ListNode* addNode( ListNode* pHead, ListNode* pNode, int pos )
{
if( pHead == NULL )
{
pHead = pNode;
}
else if( pos == 0 )
{
pNode->pNextNode = pHead;
pHead = pNode;
}
else
{
ListNode* pTempNode = pHead;
for(int i = 0; i < pos; i ++)
{
if(pTempNode->pNextNode != NULL)
{
pTempNode = pTempNode->pNextNode;
}
else
{
break;
}
}
pNode->pNextNode = pTempNode->pNextNode;
pTempNode->pNextNode = pNode;
pHead->pNextNode = pTempNode;
}
return pHead;
}
问题是,当试图添加一个不在前面的节点时,会在在中间切掉几个节点。我只是不知道在列表中搜索位置、插入新节点,然后返回整个列表的正确方法。
您的代码看起来不错,但这一行似乎没有必要:
pHead->pNextNode = pTempNode;
还有一个off-by-one错误,您需要在1而不是0处启动for循环。
这不是必要的,您应该删除它:
pHead->pNextNode = pTempNode;
它将删除pTempNode之前的节点。
好运
相关文章:
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 链表,反向函数,数据结构
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- 修改链表中的记录C++
- 如何在单个链表中交换两个节点的位置,只修改指针
- 将链表传递给函数并确保它未被修改
- 我在让我的代码输出整个链表时遇到问题.它只是输出我修改过的一些文本文件,而不是整个东西
- C++链表遍历和修改
- 如何修改c++链表中的数据3
- 需要修改堆栈/链表程序以确定单词是否为回文
- 在链表中修改的数据不会反映在内存中
- 在C++中修改链表
- 遍历链表并修改或插入节点C++
- 如何在c++链表中修改数据
- 修改在其他结构(链表)中定义的结构对象的元素
- 使用插入和删除修改c++链表