diff --git a/problems/0206.翻转链表.md b/problems/0206.翻转链表.md index 016477ae..b87c7cba 100644 --- a/problems/0206.翻转链表.md +++ b/problems/0206.翻转链表.md @@ -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) { +