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;
}