题目:
Reverse a singly linked list.
分析:定义三个指针,分别指向当前节点,当前节点的下一个节点,和下一节点的下一节点,然后反转前两个节点,然后当前节点后移。
代码:
/**
* 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) {
ListNode* temp1=NULL;
ListNode* temp2=NULL;
ListNode* temp3=NULL;
if(head==NULL)
{
return NULL;
}
temp3=head;
if(temp3->next==NULL)
{
return head;
}
temp2=temp3->next;
temp3->next=NULL;
temp1=temp2;
while(temp1)
{
temp2=temp1;
temp1=temp2->next;
temp2->next=temp3;
temp3=temp2;
}
return temp2;
}
};