C++ 删除链接列表中的每一个其他节点

C++ 删除链接列表中的每一个其他节点,c++,linked-list,C++,Linked List,我搜索了以前提出的问题,但找不到确切的答案。我很好奇是否有人知道如何删除链表中的其他节点。我有一个名为duplicate的函数,它接受123并将其转换为12333。删除其他节点就可以了,无需对它们进行比较。如果有人有任何见解。请不要只是发布源代码 这就是我想做但没用的事 Node *current; Node *undo; for (current = front, undo = current->next->next; undo != NULL; current = curren

我搜索了以前提出的问题,但找不到确切的答案。我很好奇是否有人知道如何删除链表中的其他节点。我有一个名为duplicate的函数,它接受
123
并将其转换为
12333
。删除其他节点就可以了,无需对它们进行比较。如果有人有任何见解。请不要只是发布源代码

这就是我想做但没用的事

Node *current;
Node *undo;
for (current = front, undo = current->next->next; 
undo != NULL; current = current->next, undo = current->next->next){
    current->next = undo;
}
这将输出
1233

谢谢你的帮助。我可以稍后回复以澄清任何误解。

我将使用(或者如果需要的话)和或C++11

否则,请记住要修改的指针的地址,如:

Node**undoad = &front;
int cnt=0;
for (current=front; current != NULL; current=current->next) {
  if (cnt%2 == 1) {
    Node*undo = *undoad;
    undoad = &current->next; 
    if (undo) undo->next = current->next;
  }
  cnt++;
}
但是,上面可能是:您可能需要在某个地方使用
删除

原始代码:

for (current = front, undo = current->next->next; 
   undo != NULL; 
   current = current->next, // this moves current on before you use it's next pointer
   undo = current->next->next){
     current->next = undo;
}
要进行修复,无需取消分配不需要的节点(假定节点数为偶数):

要处理奇数长度列表,并删除已删除节点的内存,请执行以下操作:

for (current = front;  current && current->next ; current = current->next){
      undo = current->next;
      current->next = current->next->next
      delete undo;
}

我不能难过地说:(我必须使用单链表。你的问题有点不清楚。如果你想复制元素,那么你为什么说你正在“删除”节点?很抱歉,我的意思是,删除每一个其他节点。你不是在删除节点,而只是在更改链接…如果你想,我可以添加代码…你建议f做什么ix那个?undo=current->next->next如果current->next为空怎么办?它不会产生seg故障吗?谢谢老兄。这几乎就产生了。说得很有道理,我真的把它复杂化了。现在你提到了没有释放。那么我该如何释放节点呢?
for (current = front;  current && current->next ; current = current->next){
      undo = current->next;
      current->next = current->next->next
      delete undo;
}