java - 从头节点反向链表?

标签 java algorithm linked-list

我在网上到处都能看到从尾部开始尊敬的程序

这里的节点是头节点

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;
    }
}

但我可以想到我可以从头节点反转的方法也像

这里的节点是头节点

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;
   }
}

但我没有看到任何地方提到方法。此方法是否存在任何错误/问题或未优化?

最佳答案

第一个版本是head 递归 的示例。第二个是 tail recursion 的例子。这里有很好的解释:The difference between head & tail recursion .

关于java - 从头节点反向链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282831/

相关文章:

algorithm - 如何找到一副收藏卡的最佳价格?

c++ - 链表堆栈复制构造函数 C++

c - 链表没有正确删除节点

java - Linux Mint 上的 Netbeans 问题

java - 根据总点击次数更改按钮点击的内容

java - 使用 OkHttp 3 发送原始 POST 请求

algorithm - 计算边缘连通性的有效算法?

java - 如何使用 drool 从自定义对象列表中查找任何属性的值,然后将其存储到变量中

java - 使用正则表达式codingBat splitThousands(以及单元测试方法)

java - LibGDX 字体未出现在屏幕上