数据结构和算法之反转链表

Reverse linked list 反转链表

这是一个链表数据结构的基础算法之一,总体的思想不难想象,其实就是一个反排链表

  • 示例

input 
1-->2-->3-->4-->5-->6-->7-->8-->9-->null
output
9-->8-->7-->6-->5-->4-->3-->2-->1-->null

面试官询问你这道题的话,其实不是看你思维逻辑掌握怎么样,其实就是 勘查你的代码积累量。

我们回到LeetCode中发现,居然没有题解,这是一个很令人不可思议的事情。
数据结构和算法之反转链表

但是网上有很多的都是 其他语言变成,我在这里编写下我们Java语言是怎么样实现的。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null || head.next==null){
            return head;
        }
        ListNode lode = null;
        while(head != null){
            ListNode temp = head.next;
            head.next = lode;
            lode = head;
            head = temp;
        }
        return lode;
    }
}

上边的代码不难想象,我在这就不一一的介绍了,

数据结构和算法之反转链表

这是这段代码的执行用时。

数据结构和算法之反转链表

网上总共有27个测试用例 完全通过。

希望大家看完之后多多敲打代码,熟能生巧。