206. 反转链表
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
提示:
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
**进阶:**链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
一、解法
typescript
// https://leetcode.cn/problems/reverse-linked-list/
import ListNode from "../1-data-structure/ListNode";
import SinglyLinkedList from "../1-data-structure/SinglyLinkedList";
function reverseList(head: ListNode | null): ListNode | null {
if (head === null) return null;
let reverseHead: ListNode = new ListNode(head.val, null);
head = head.next;
while (head) {
reverseHead.next = new ListNode(reverseHead.val, reverseHead.next);
reverseHead.val = head.val;
head = head.next;
}
return reverseHead;
};
const linkedList = new SinglyLinkedList();
linkedList.append(5).append(4).append(3).append(2).append(1);
console.log(JSON.stringify(reverseList(linkedList.head), null, 4))
const linkedList1 = new SinglyLinkedList();
linkedList1.append(54).append(4).append(23).append(8).append(2);
console.log(JSON.stringify(reverseList(linkedList1.head), null, 4))