数据结构和算法之反转链表
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个测试用例 完全通过。
希望大家看完之后多多敲打代码,熟能生巧。