遍历
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
const a = new Node(1)
const b = new Node(2)
const c = new Node(3)
const d = new Node(4)
a.next = b;
b.next = c;
c.next = d;
d.next = null;
//遍历链表
function each(result) {
if (result == null) return;
console.log(result.value);
each(result.next)
}
each(a)
逆置
正常的链表如图
逆置后的链表如图
代码如下
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
const a = new Node(1)
const b = new Node(2)
const c = new Node(3)
const d = new Node(4)
a.next = b;
b.next = c;
c.next = d;
d.next = null;
//遍历链表
function each(result) {
if (result == null) return;
console.log(result.value);
each(result.next)
}
// 链表的逆置
function reverse(result){
if(result.next.next == null){ //代表当前节点值倒数第二个
result.next.next = result; // 将倒数第一个节点的next指向倒数第二个
return result.next; // 将其返回
}else{
const value = reverse(result.next) // 接受返回后的数据
result.next.next = result; // 将前一个的next指向自己
result.next = null; // 将当前的next置空 // 如果不置空,当为第一节点时第一个会指向第一个节点,因为一开始第一个节点就指向第二节点
return value;
}
}
reverse(a)
each(d)
里面使用啦递归,需要自己想想