题目:
Reverse a singly linked list.
Example:
Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL
代码:
非递归解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode curr = null;
ListNode temp = head;
ListNode prev = null;
while(temp != null){
prev = curr;
curr = temp;
temp = curr.next;
curr.next = prev;
}
return curr;
}
}
递归解法
/**
* 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 nextNode=head.next;
ListNode newHead=reverseList(nextNode);
nextNode.next=head;
head.next=null;
return newHead;
}
}
本文详细介绍了两种反转链表的方法:非递归解法和递归解法。非递归解法通过三个指针prev、curr和temp进行节点的反转连接,而递归解法则利用递归特性反转链表的剩余部分,再将头节点链接到反转后的链表末尾。
419

被折叠的 条评论
为什么被折叠?



