首页 > 代码库 > 206. Reverse Linked List
206. Reverse Linked List
Reverse a singly linked list.
Solution 1:
思路:null的使用。用一个null node来承接,一个一个接上去即可。一刷的时候还觉得这node转化好麻烦好神奇,熟悉之后其实做起来很快。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode reverseList(ListNode head) { if(head==null) { return head; } ListNode last=null; while(head!=null) { ListNode copy=head.next; head.next=last; last=head; head=copy; } return last; }}
Solution 2:
follow up : Use Recursion
思路:如果head.next不是null,递归head.next,注意先把head.next指针存好,方便于reverse之后接上head。因为返回的是一个listnode,用一个dummy node来把node用于输出。如果head.next是null的话,直接返回head即可。Recursion真的是一个神器!
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode reverseList(ListNode head) { if(head==null) { return head; } ListNode dummy=new ListNode(-1); if(head.next!=null) { ListNode copy=head.next; dummy.next=reverseList(head.next); copy.next=head; head.next=null; } else { return head; } return dummy.next; }}
206. Reverse Linked List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。