站点工具

用户工具


<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>
admin · 2021/09/14 12:42 · 教程_算法_反转链表.1631594546.txt.gz