反转链表
2019-01-02 本文已影响10人
你缺少想象力
讲反转链表之前,想讲一下怎么打印链表
链表结构:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
例子:
打印链表:
public static void show(ListNode listNode) {
while (listNode != null) {
System.out.println(listNode.val);
listNode = listNode.next;
}
}
反转链表的基础上,相当于要先遍历一边链表,上面的算法讲到怎么遍历链表,反转链表的代码如下:
public static ListNode reverseList(ListNode head) {
// 为了遍历链表
ListNode temp = null;
// 保存反转后的链表
ListNode newList = null;
while (head != null) {
// 为了遍历
temp = head.next;
// 让下一个地址指向上一个位置
head.next = newList;
// 保存反转后的链表
newList = head;
// 为了遍历
head = temp;
}
return newList;
}