测试数据
function node(value,next=null){
this.value=value;
this.next=next;
}
let a=new node(1)
let b= new node(2,a)
let c= new node(3,b)
let d= new node(4,c)
function printLink(node){
console.log(node.value)
while(node.next){
node=node.next;
console.log(node.value);
}
}
答案:
function reverse(root) {
if (!root || !root.next) return root;
if (!root.next.next) {
var temp = root.next;
root.next.next = root;
root.next = null;
return temp;
}
else {
var temp = reverse(root.next);
root.next.next = root;
root.next = null;
return temp;
}
}
解析:
- 动态规划:
临界值判断:如果只有一个节点;如果只有两个节点;
如果有多个节点,先把后root.next的链表倒序好,然后把root节点放到最后面,最后返回root.next倒序前的节点。