当前位置:   article > 正文

算法第十三天:leetcode206.反转链表

算法第十三天:leetcode206.反转链表

一、反转链表的题目描述与链接

   206.反转链表的链接如下表所示,您可直接复制下面网址进入力扣学习,在观看下面的内容之前一定要先做一遍哦,这样才能印象深刻!

https://leetcode.cn/problems/reverse-linked-list/description/icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-linked-list/description/

题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

 

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

二、Java版

 反转链表该题可用双指针的思想去做,示例代码如下代码块所示:

  1. class Solution {
  2. public ListNode reverseList(ListNode head) {
  3. ListNode pre=null;
  4. ListNode cur=head;
  5. ListNode temp=null;
  6. while(cur!=null){
  7. temp=cur.next;
  8. cur.next=pre;
  9. pre=cur;
  10. cur=temp;
  11. }
  12. return pre;
  13. }
  14. }

三、反转链表的具体思路 

  • 先用临时指针temp把cur的下一个保存下来,因为接下来要改变cur->next;
  • 再进行翻转操作,cur->next指向pre,然后先更新pre指针,再更新cur指针;
  • 最后一步输出结果pre。

 

  最后,感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您有用的算法知识和启发。希望本题对大家有帮助,谢谢各位读者的支持!!! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/882101
推荐阅读
相关标签
  

闽ICP备14008679号