题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/*function ListNode(x){ this.val = x; this.next = null; }*/ function ReverseList(pHead) { //分为已反转和待反转两个表,pre式已反转链表第一个节点,cur是待反转链表第一个节点,next用来保存cur.next,以免cur.next指向改变后找不到原来的next //时间复杂度O(n) //考虑链表为空的情况 if(!pHead){ return null } //初始化 let pre = null; let next = pHead.next; let cur = pHead; while(cur){ //起到保存变量的作用,以防访问不到cur.next next = cur.next; //此前pre还是已反转链表的第一个节点,此操作后变成已反转链表的第二个节点 cur.next = pre; //待反转第一个指针指向已反转第一个指针 pre = cur; //待反转指针移动 cur = next; } return pre } module.exports = { ReverseList : ReverseList };