Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 替换第n个位置链接列表中的节点_C++_C++11 - Fatal编程技术网

C++ 替换第n个位置链接列表中的节点

C++ 替换第n个位置链接列表中的节点,c++,c++11,C++,C++11,因此,我想编写代码来实现replaceNode(…)函数,该函数接受指向OldNode和 使用下面给出的函数头将NewNode作为输入。还包括特殊类型的代码 OldNode是列表的头节点或尾节点的情况。假设列表从不为空 在调用此函数之前,所有节点都已动态创建 void List::replaceNode(Node *OldNode, Node *NewNode) { //write code here } 我不知道该怎么做。有人能帮我解决这个问题吗?案例1:OldNode既不是头也不是尾(单

因此,我想编写代码来实现replaceNode(…)函数,该函数接受指向OldNode和 使用下面给出的函数头将NewNode作为输入。还包括特殊类型的代码 OldNode是列表的头节点或尾节点的情况。假设列表从不为空 在调用此函数之前,所有节点都已动态创建

void List::replaceNode(Node *OldNode, Node *NewNode)
{
//write code here
}


我不知道该怎么做。有人能帮我解决这个问题吗?案例1:OldNode既不是头也不是尾(单链接列表)

您需要了解指向OldNode的节点,我们将其称为*PrevPntr&OldNode所指向的节点。 然后它会是这样的:

          `PrevPntr->next = NewNode;
           NewNode->next  = OldNode->next
          `
           NewNode->next  = OldNode->next
          `PrevPntr->next = NewNode;
否则 只需将OldNode的数据替换为NewNode的数据(在这种情况下会有一些约束)

案例2:其中OldNode是HEAD(单链接列表)

然后它会是这样的:

          `PrevPntr->next = NewNode;
           NewNode->next  = OldNode->next
          `
           NewNode->next  = OldNode->next
          `PrevPntr->next = NewNode;
案例3:其中OldNode是TAIL(单链接列表)

您需要了解指向旧节点的节点,我们称之为*PrevPntr。 然后它会是这样的:

          `PrevPntr->next = NewNode;
           NewNode->next  = OldNode->next
          `
           NewNode->next  = OldNode->next
          `PrevPntr->next = NewNode;

为什么标记为向下阅读DV按钮上的工具提示。@jake123我认为原因是您在提问之前没有提供任何研究证据。如果您先在发布的图表中绘制结果,则编写此代码会更容易。@jake123现在您添加了图片,那么查看您应该如何做就更简单了。@jake123看一看视频讲座或参考一些文本来阐明LL的逻辑。可以这样做吗
oldNode=newNode;删除(OldNode)
@jake123 OldNode是一个指针,指向包含125个数据的节点,所以如果执行OldNode=newNode;删除(OldNode);然后oldPointer将简单地开始指向NewNode,而不是指向125的节点,这肯定不是您想要的。在youtube上观看PP chakravarty的演讲,以便更好地了解linkedlist。