添加 0206.翻转链表 单纯使用虚拟头结点实现链表翻转

This commit is contained in:
刘路生
2023-02-25 14:24:27 +08:00
parent f12049b03f
commit e3f4f3c0c8

View File

@ -682,7 +682,33 @@ public class LinkNumbers
## 使用虚拟头结点解决链表翻转
> 使用虚拟头结点,通过头插法实现链表的翻转(不需要栈)
```java
// 迭代方法:增加虚头结点,使用头插法实现链表翻转
public static ListNode reverseList1(ListNode head) {
// 创建虚头结点
ListNode dumpyHead = new ListNode(-1);
dumpyHead.next = null;
// 遍历所有节点
ListNode cur = head;
while(cur != null){
ListNode temp = cur.next;
// 头插法
cur.next = dumpyHead.next;
dumpyHead.next = cur;
cur = temp;
}
return dumpyHead.next;
}
```
## 使用栈解决反转链表的问题
* 首先将所有的结点入栈
* 然后创建一个虚拟虚拟头结点让cur指向虚拟头结点。然后开始循环出栈每出来一个元素就把它加入到以虚拟头结点为头结点的链表当中最后返回即可。
@ -720,3 +746,4 @@ public ListNode reverseList(ListNode head) {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>