java:
/**
* 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 first = null;
ListNode second = head;
ListNode third = head.next;
while (second != null) {//注!!用second遍历
second.next = first;
first = second;//注!!在third == null之前,所以这时候first在最后节点;
second = third;
if (third == null) {
break;
}
third = third.next;
}
return first;
}
}
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(!head) return NULL;
ListNode *pPre = NULL, *pNode = head, *pNext = head->next;
while (pNode) {
pNode->next = pPre;
if (!pNext) break;
pPre = pNode; pNode = pNext; pNext = pNext->next;
}//注!!在!pNext之后,所以pNode在最后一个节点;
return pNode;
}
};