码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 206 Reverse Linked List

时间:2016-08-03 20:18:23      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

Reverse a singly linked list.

 

思路:

正常情况下需要转置的链表一般都会做成双链表以减小转置的开销,但是题目规定是单链表。因此想到的方法是通过额外的引用指向节点,并且申请新引用存放转置时候的next数据域,来达到转置单链表的目的。迭代法比较繁琐,应该考虑到每一步的顺序,否则就会丢失引用。而Stack类的话相当直观,就是将整个链表放入栈内存取,即完成了倒置。

 

解法:

1.迭代法

循环中四步依次为存放当前节点的后节点,将当前结点的next指向前节点,将代表前节点的引用移动至当前节点,将代表当前节点的引用移动至下一个节点。顺序不可打乱。

 1 /*
 2     public class ListNode
 3     {
 4         int val;
 5         ListNode next;
 6 
 7         ListNode(int x)
 8         {
 9             val = x;
10         }
11     }
12 */
13 
14 public class Solution
15 {
16     public ListNode reverseList(ListNode head)
17     {
18         if(head == null || head.next == null)
19             return head;
20         
21         ListNode backPointer = head;
22         ListNode pointer = head.next;
23 
24         backPointer.next = null;
25 
26         ListNode addition;
27 
28         while(pointer != null)
29         {
30             addition = pointer.next;
31             pointer.next = backPointer;
32             backPointer = pointer;
33             pointer = addition;
34         }
35 
36         return backPointer;
37     }
38 }

 

2.Stack类法

 1 /*
 2     public class ListNode
 3     {
 4         int val;
 5         ListNode next;
 6 
 7         ListNode(int x)
 8         {
 9             val = x;
10         }
11     }
12 */
13 
14 import java.util.Stack;
15 
16 public class Solution
17 {
18     public ListNode reverseList(ListNode head)
19     {
20         if(head == null || head.next == null)
21             return head;
22 
23         Stack<ListNode> stack = new Stack<>();
24         ListNode temp = head;
25         while(temp != null)
26         {
27             stack.push(temp);
28             temp = temp.next;
29         }
30 
31         head = stack.pop();
32         temp = head;
33 
34         while(!stack.isEmpty())
35         {
36             temp.next = stack.pop();
37             temp = temp.next;
38         }
39 
40         temp.next = null;
41         return head;
42     }
43 }

 

LeetCode 206 Reverse Linked List

标签:

原文地址:http://www.cnblogs.com/wood-python/p/5734113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!