反转链表

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;
}
上一篇 下一篇

猜你喜欢

热点阅读