LeetCode刷题(185)~反转链表【双指针|递归 易错!】
【摘要】 题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
12
限制:
0 <= 节点个数 <= 5000
解答 By 海轰
提交代码(双指针)
List...
题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
- 1
- 2
限制:
- 0 <= 节点个数 <= 5000
解答 By 海轰
提交代码(双指针)
ListNode* reverseList(ListNode* head) { ListNode* cur=NULL; ListNode* pre=head; while(pre){ ListNode* temp=pre->next; pre->next=cur; cur=pre; pre=temp; } return cur; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
运行结果
提交代码(递归)
ListNode* reverseList(ListNode* head) { if(head==NULL || head->next==NULL){ return head; } ListNode* res=reverseList(head->next); head->next->next=head; head->next=NULL; return res; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
运行结果
递归详解图(以1–>2–>3–>null 为例)
提交代码(优秀!)
ListNode* reverseList(ListNode* head) { if(!head) return head; ListNode* cur=head; while(head->next){ ListNode* temp=head->next->next; head->next->next=cur; cur=head->next; head->next=temp; } return cur; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
运行结果
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof
文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。
原文链接:haihong.blog.csdn.net/article/details/108948105
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)