题目描述:
分析:
可用三个指针指示链表位置,进行链表指向反转:
三个指针顺序依次为:p,q,o 当q指向空,说明链表已反转完毕
1. 特判:
链表为空链表或只有一个元素的链表,则直接返回
2.反转:
初始指针:
p=head q=head->next
循环结束条件(q为空):{
o记录下q的下一个位置
q指针反转
p,q指针依次往前一位
}
原本head头变为链表尾,所以让head指向NULL
3 返回:
q成为新链表的表头,返回q
代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head==NULL||head->next==NULL){
return head;
}
ListNode *p=head,*q=p->next,*o;
while(q){
o=q->next;
q->next=p;
p=q;
q=o;
}
head->next=NULL;
return p;
}
};