struct ListNode* ReverseList(struct ListNode* pHead ) {
struct ListNode *p1=pHead,*p3=pHead,*p2=pHead->next;
if(pHead==NULL)
return NULL;
else if(pHead->next==NULL)
return pHead;
pHead->next=NULL;
while(p2!=NULL)
{
p1=p2->next;
p2->next=p3;
p3=p2;
p2=p1;
}
return p3;
}
只需要在while循环里设置两个指针循环就可以实现反转,首先
{ //p1=head p2=phead->next temp为临时指针;
temp=p2->next;
p2->next=p1; 第二个节点又指向了第一个地址,实现反转;
p1=p2; p1为前面一个指针,需要向下面传递,
p2=temp; 这样就可以使节点的指针一直往下面传导;
}
这样我们就实现了两个循环;第一个temp与p2的循环;第二个p2与p1的传导;