来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/reverse-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
解答
迭代解决
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val = (val===undefined ? 0 : val)* this.next = (next===undefined ? null : next)* }*//*** @param {ListNode} head* @return {ListNode}*/var reverseList = function(head) {let prevNode = null;while (head) {const next = head.next;head.next = prevNode;prevNode = head;head = next;}return prevNode;};
递归解决
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let firstNode = null;
function reverseNode (node, prevNode) {
if (!node) return;
const next = node.next;
if (next === null) {
firstNode = node;
}
node.next = prevNode;
reverseNode(next, node);
}
reverseNode(head, null);
return firstNode;
};
