算法-反转链表

Posted natsu-cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法-反转链表相关的知识,希望对你有一定的参考价值。

题目:

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制:

0 <= 节点个数 <= 5000

代码:

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    let prev = null;
    let curr = head;
    while(curr) {
        const next = curr.next;
        curr.next = prev;
        prev = curr;
        curr = next;
    }
    return prev
};

思路:将链表的指针指向前一个即可,第一个指向null,直至遍历完所有。

以上是关于算法-反转链表的主要内容,如果未能解决你的问题,请参考以下文章

算法-反转链表

算法-反转链表

代码随想录算法训练营第三天 | 203.移除链表元素707.设计链表 206.反转链表

代码随想录算法训练营第三天 | 203.移除链表元素707.设计链表 206.反转链表

算法总结之 反转单向和双向链表

算法LeetCode 反转链表(递归)关键步骤理解