1.题目描述:
给你单链表的头节点head,请你反转链表,并返回反转后的链表。
示例:
2.思路:另一个指针为空
另外一个指针指向头指针,指向头指针的向下移动,pre更新为curr,完成逆置
3.代码:
struct ListNode* reverseList(struct ListNode* head)
{
struct ListNode *prev=NULL;
struct ListNode* curr=head;
while(curr!=NULL)
{
struct ListNode* next=curr->next;
curr->next=prev;
prev=curr;
curr=next;
}
return prev;
}
4.时间复杂度:
O(n),n为链表的长度,需要遍历链表一次
空间复杂度:O(1),没有开辟新的空间,还应用的是原来的空间