头插法反转链表
Posted alyiacon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了头插法反转链表相关的知识,希望对你有一定的参考价值。
过程分析:
- 原链表 1->2->3
- 新建new节点,指向1,1指向null,此时head更新2
- head(2)插入new之后,1之前,此时head更新为3
- head(3)插入new之后,2之前
规律总结:
通过newList保存当前节点,通过下一次操作把新的节点插入二者之间实现反转。
class Test4 {
public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3); // 1 -> 2 -> 3
reverse(head);
}
public static ListNode reverse(ListNode head) {
// core algorithm
ListNode newList = new ListNode(-1);
while (head != null) {
ListNode next = head.next;
head.next = newList.next;
newList.next = head;
head = next;
// print the process
ListNode print = newList;
System.out.println("");
while (null != print) {
System.out.print(print.val + "->");
print = print.next;
}
System.out.print("null");
}
return newList.next;
}
private static class ListNode {
ListNode next = null;
int val;
ListNode(int val) {
this.val = val;
}
}
}
输出结果:
以上是关于头插法反转链表的主要内容,如果未能解决你的问题,请参考以下文章