当前位置:   article > 正文

《手撕链表题系列-2》反转链表_华为手撕代码题目反转链表

华为手撕代码题目反转链表

前言

  • 本系列主要讲解链表的经典题

注:划重点!!必考~

反转链表

力扣链接:206. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)

  • 题目描述:

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

  • 示例:

  • 提示:
  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000
  • 解题思路:

这里我们采用三指针进行反转链表:

  1. 指针cur进行遍历链表
  2. 指针next记录cur的下一个指针,防止反转时下一个节点地址丢失
  3. 指针prev用来记录cur后指针,以便构建反转后的节点关系

注:需要处理好首节点节点之间的更替关系

  • 参考代码:
  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * struct ListNode *next;
  6. * };
  7. */
  8. struct ListNode* reverseList(struct ListNode* head){
  9. struct ListNode* prev=NULL,*cur=head,*next;
  10. while(cur)//cur为NULL时遍历链表结束
  11. {
  12. //保存下一个节点地址
  13. next=cur->next;
  14. //反转链接方向
  15. cur->next=prev;
  16. //更新后指向结点位置
  17. prev=cur;
  18. //更新指向当前节点位置
  19. cur=next;
  20. }
  21. return prev;
  22. }
  • 结果:

每日k题无烦恼,留个三连再走也不迟~

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

闽ICP备14008679号