首页 > 代码库 > [LeetCode]Reverse Linked List
[LeetCode]Reverse Linked List
题目:Reverse Linked List
逆置单链表。
思路:递归。
递归后,如何逆置头结点?
因为头结点的下一个节点经过递归逆置后会变成最后一个节点,所以,实际上是知道返回的新链表的最后一个节点的。这样就可以简单的逆置了。
注意:要判断只有一个节点的情况。
ListNode* LeetCode::reverseList(ListNode* head){ if (!head || !head->next)return head;//当链表为空,或只有一个节点 ListNode* p = reverseList(head->next);//递归 head->next->next = head;//将头结点放到尾部 head->next = nullptr;//最后一个节点的下一个节点置为空 return p; }
思路:非递归。
ListNode* LeetCode::reverseList(ListNode* head){ if (!head || !head->next)return head;//当链表为空,或只有一个节点 ListNode* p = nullptr;//新链表的头部 while (head){ ListNode* q = head->next;//保存当前节点的下一个节点 head->next = p;//逆置当前节点 p = head;//更新新链表的头部 head = q;//移动到下一个节点 } return p; }
[LeetCode]Reverse Linked List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。