题解 | #从尾到头打印链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/function ListNode(x){ this.val = x; this.next = null; }/ function ReverseList(pHead) { //这里应该用到了双向链表了。 /解题思路:不断地将向后的指针设置为null,然后改为向前的指针。 let pre = null; //先将向前的指针设置为空,因为没办法,题目给出的是单向链表,想要用双向链表的知识只能先将向前的指针设置为空,后面再赋值。 let cur = pHead; //cur代表的是当前节点,从第一个节点开始 while (cur){ let next = cur.next; //先将向后的指针保存到next,因为后面要继续往后检索要用到向后的指针。 cur.next = pre; //将向后的指针设置为null去掉。 pre = cur; //将向前的指针指向当前元素 cur = next; //用保存着指向下一个元素的指针的next赋值给cur,那么cur代表的是下一个元素。 //此循环知道下一个元素为空(即null)才会结束。 } return pre; //最后一次循环中,指针指向原来链表的最后一个元素,也就是新链表的第一个元素。 } module.exports = { ReverseList : ReverseList };