在下面的函数中,我想反转链表,但我想知道在哪里可以删除节点?

时间:2015-04-16 03:02:36

标签: c++ pointers linked-list

在以下函数中,我想要反转链表,但我想知道我可以在哪里删除节点?

LinkedList reverse(LinkedList l){ 
   LinkedList res;
   while(l.getHead()){
     Node * node = new Node(l.getHead()->item); /*create a new node with item 
      of current head of l*/
     node->next = res.getHead();/*set the next pointer of node to current head 
      of res*/
     res.setHead(node); /*set node as new head of res*/
     l.setHead(l.getHead()->next); /*move to next node in l*/
   }
   return res;
}

1 个答案:

答案 0 :(得分:0)

您可以在

之后删除节点
l.setHead(l.getHead()->next); /*move to next node in l*/

但您首先需要对该节点的引用。所以你需要将它保存在像

这样的变量中
LinkedList *tmp = l.getHead();

l.setHead(...)行之前。