链表的逆置
这样一个链表
我们想要将它逆置 相当于箭头换一个方向
通过递归的方式来进行逆置
function nizhi(root){
if(root.next.next == null){ //代表当前节点是倒数第二个节点
root.next.next = root; //让最后一个节点的next指向自己(倒数第二个)
return root.next
}else{
var result = nizhi(root.next);
root.next.next = root;
root.next = null
return result;
}
}
var newRoot=nizhi(node1)
console.log(newRoot);
上面这是进行逆置的代码实现
下面是全部代码
function Node(value){
this.value = value;
this.next = null;
}
var node1 = new Node(1)
var node2 = new Node(2)
var node3 = new Node(3)
var node4 = new Node(4)
var node5 = new Node(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
// console.log(node1);
function nizhi(root){
if(root.next.next == null){ //代表当前节点是倒数第二个节点
root.next.next = root; //让最后一个节点的next指向自己(倒数第二个)
return root.next //递归的出口
}else{
var result = nizhi(root.next);
root.next.next = root;
root.next = null
return result;
}
}
var newRoot=nizhi(node1)
console.log(newRoot);
function bianLink(root){ //进行递归遍历
if (root == null) return;
console.log(root.value);
bianLink(root.next)
}
bianLink(newRoot)