从标题节点反向链表?

时间:2016-07-09 14:28:05

标签: java algorithm linked-list

网上的任何地方我都看到程序从尾部开始反复出现

此处node是标头节点

reverseNode(int node){

    if(node==null){
        return;
    }

    reverseNode(node.next);

    Node temp = node.next;
    node.next = node.prev;
    node.prev=temp;

    if(node.prev==null){
        headNode = node;
    }
}

但我可以想到我可以从标题节点反转的方法,如

此处node是标头节点

reverseNode(int node){

    if(node==null){
        return;
    }

    Node temp = node.next;
    node.next = node.prev;
    node.prev=temp;


    reverseNode(node.prev);

   if(node.prev==null){
       headNode = node;
   }
}

但我没有看到任何地方提到的方法。这种方法中是否存在任何错误/问题或未进行优化?

1 个答案:

答案 0 :(得分:0)

第一个版本是tail recursion的示例。第二个是{{1}}的示例。这里有很好的解释:The difference between head & tail recursion