链表(C++)中具有正值的重复节点

  • 本文关键字:节点 C++ 链表 c++ linked-list
  • 更新时间 :
  • 英文 :

struct Node {
int data; 
Node* next; 
};
struct List {
Node* first; 
};
void duplicatePositiveNodes(List* list) {
Node* current = new Node();
Node* tmp = new Node();
current = list->first;
while (current != nullptr) {
if (current->data > 0) {
tmp->data = current->data;
tmp->next = current->next;
current->next = tmp;
current = current->next->next;
}
else {
current = current->next;
}
}
Print(list->first);
}

因此,例如,我有一个链接列表->{1,0,-2,3,-4},我想收到这个列表->{1,1,0,-2,3,3,-4}。

使用我当前的代码,我正在接收{1,3,-4}

调试后,我意识到问题出在这段代码的第二次迭代中(我想,我把指针等搞砸了(

tmp->next = current->next;
current->next = tmp;

谢谢你的帮助(

您的代码中存在许多问题。使用调试器进行调试是一种很好的方法,可以找出代码在哪里没有达到预期效果。

这里有一种根据需要复制节点的简单方法:

void duplicatePositiveNodes(List* list) 
{
for(auto current = list->first; current; current = current-> next)
if (current->data > 0)
{
current->next = new Node{current->data, current->next};
current = current->next;  // to avoid infinite duplicates
}

Print(list->first);
}

相关内容

  • 没有找到相关文章

最新更新