定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 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) { if(!head||!head.next) return head; let ret=reverseList(head.next); head.next.next=head; //head.next是新链表的尾节点 head.next=null; return ret; };