定义指针变量p,q,r,初始化p=pHead指向函数参数指针头部,q=p->next指向p的下一个结点,r=q->next指向q的下一个结点,因为反转后头变成尾,所以指向头部的指针p的next赋值为空,之后执行循环,每次将中间结点q的next指向p,然后p,q,r向后挪一个位置,重复这个步骤直到r指针为空时跳出循环,此时得到的q指针即为反转后的链表头部
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* p=(ListNode*)malloc(sizeof(ListNode));
ListNode* q=(ListNode*)malloc(sizeof(ListNode));
ListNode* r=(ListNode*)malloc(sizeof(ListNode));
if(pHead==NULL)
return NULL;
if(pHead->next == NULL)
return pHead;
p=pHead;
q=p->next;
p->next=NULL;
r=q->next;
while(true){
q->next=p;
if(r==NULL)
break;
p=q;
q=r;
r=r->next;
}
return q;
}
};
京公网安备 11010502036488号