网上的任何地方我都看到程序从尾部开始反复出现
此处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;
}
}
但我没有看到任何地方提到的方法。这种方法中是否存在任何错误/问题或未进行优化?
答案 0 :(得分:0)
第一个版本是tail recursion
的示例。第二个是{{1}}的示例。这里有很好的解释:The difference between head & tail recursion。