class Node {
constructor(val, next) {
this.val = val;
this.next = next;
}
print() {
let head = this;
let str = "";
while (head) {
str += head.val;
head.next && (str += " => ");
head = head.next;
}
console.log(str);
}
}
let node5 = new Node(5, null);
let node4 = new Node(4, node5);
let node3 = new Node(3, node4);
let node2 = new Node(2, node3);
let node1 = new Node(1, node2);
node1.print();
//迭代
function reverse(node) {
let pre = null,
next;
let cur = node;
while (cur) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
let newNode = reverse(node1);
newNode.print();
//递归调用
function reverse1(node) {
if (!node || !node.next) {
return node;
}
let newHead = reverse1(node);
node.next.next = node;
node.next = null;
return newHead;
}
let newNode1 = reverse(node1);
newNode1.print();
单链表逆转
于 2024-04-09 10:33:22 首次发布