题目
给你一个单链表,要求返回反转后的头节点,例如
要求在O(n)的时间复杂度和O(1) 空间复杂度求解
解题思路:
- 首先是判断链表是否为空或者是否只有一个节点,是的话就直接返回即可
- 否则从第二个开始,不断变为头结点如下
不断地把下一个非空的节点指向头节点,同时更新头结点位置
3、最后别忘了在反转后的最后一个节点的next指向NULL
下面是我的代码
ListNode* reverseList(ListNode* head) {
if(head==NULL||head->next==NULL){
return head;
}
ListNode* p=head->next;
ListNode* q=NULL;
ListNode* t=head;
while(p!=NULL){
q=p;
p=p->next;
q->next=head;
head=q;
}
t->next=NULL;
return head;
}