leetcode 206. Reverse Linked List
题目
Reverse a singly linked list.
解1
/**
* 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||head.next==null){
//如果这个链表为空或者这个链表只有一个结点,则直接返回即可
return head;
}
ListNode pre=head;
ListNode p=pre.next;
pre.next=null;
ListNode nxt=null;
while(p!=null){
nxt=p.next;
p.next=pre;
pre=p;
p=nxt;
}
return pre;
}
}
解2(优解)
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
//如果这个链表为空或者这个链表只有一个节点,则直接返回即可
return head;
}
ListNode pReversedHead=null;
ListNode pNode=head;
ListNode pPrev=null;
while(pNode!=null){
ListNode pNext=pNode.next;
if(pNext==null)
pReversedHead=pNode;
pNode.next=pPrev;
pPrev=pNode;
pNode=pNext;
}
return pReversedHead;
}
本文提供了解答leetcode206题目的两种方法:一种为基本实现,另一种为更优解法。重点在于理解如何通过迭代操作反转单链表,并通过实例演示了如何将链表节点的指针方向反转。
338

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



