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.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL)
{
return NULL;
}
ListNode *previousNode = NULL;
ListNode *currentNode = head;
ListNode *nextNode = head->next;
while (nextNode != NULL)
{
currentNode->next = previousNode;
previousNode = currentNode;
currentNode = nextNode;
nextNode = currentNode->next;
}
currentNode->next = previousNode;
return currentNode;
}
};