class Solution {
public:
ListNode* ReverseList(ListNode* head) {
if(head==NULL)
{
return NULL;
}
ListNode *p,*q;
p=head->next;
head->next=NULL;
while(p)
{
/*向后挪动一个位置*/
q=p->next;
/*头插*/
p->next=head->next;
head->next=p;
public:
ListNode* ReverseList(ListNode* head) {
if(head==NULL)
{
return NULL;
}
ListNode *p,*q;
p=head->next;
head->next=NULL;
while(p)
{
/*向后挪动一个位置*/
q=p->next;
/*头插*/
head->next=p;
p->next=head;
head=p;
p=q;
}
return head;
}
};
}
return head;
}
};
问题:你们仔细观察红色的代码有什么问题嘛?
答:输入:1->2->3->4->5,红色部分的输出为:1->5->4->3->2,我想大家应该发现问题出在哪了。
head->next指的应该是第一个节点,我们应该是往head上插,所以希望大家多多注意。