程序员

leetcode-反转链表

2018-12-17  本文已影响12人  8239e604d437

反转一个单链表。

示例:

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

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

代码

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    if(!head){
        return null;
    }
    while(head !== null){
        //获取下一个节点
        let nextNode = head.next;
        //当前节点的下个节点指向当前节点的上个节点
        head.next = head.before?head.before:null;

        delete head.before;
        if(nextNode){
            //关联下个节点,绑定前节点
            nextNode.before = head;
        }else{
            return head;
        }
        head = nextNode;
    }
};

上一篇 下一篇

猜你喜欢

热点阅读