<markdown> [\<\< 返回查看其他算法题](教程/算法) # 反转链表 输入一个链表,反转链表后,输出新链表的表头。 > 示例 ``` 输入: {1,2,3} 返回值: {3,2,1} ``` ## 代码实现 ```javascript function reverseList(pHead) { let pre = next = null, cur = pHead while(cur) { next = cur.next cur.next = pre pre = cur cur = next } return pre } ``` ## 原理 ![原理](:笔记1_1.png) ## 测试 ```javascript function reverseList(pHead) { let pre = next = null, cur = pHead while(cur) { next = cur.next cur.next = pre pre = cur cur = next } return pre } class Node { constructor(val) { this.val = val this.next = null } } function createList(values) { let pHead = p = new Node(-1) for (let i = 0; i < values.length; i++) { p.next = new Node(values[i]) p = p.next } return pHead.next } function showList(pHead) { let p = pHead let arr = [] while (p) { arr.push(p.val) p = p.next } console.log(arr.join('->')) } let list = createList([1,2,3]) showList(list) let list2 = reverseList(list) showList(list2) ``` </markdown>