当前位置:   article > 正文

反转链表(C语言)———链表经典算法题

反转链表(C语言)———链表经典算法题

 题目描述​​​​​​206. 反转链表 - 力扣(LeetCode)

答案展示:

迭代:

递归:

  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. static struct ListNode*tmp1 = NULL;
  10. if(!head)
  11. return tmp1;//判空
  12. else if(head->next)
  13. {
  14. 逆置
  15. struct ListNode*tmp2 = head->next;
  16. head->next = tmp1;
  17. tmp1 = head;
  18. return reverseList(tmp2);
  19. }
  20. else
  21. { //结束同时初始化tmp1
  22. head->next = tmp1;
  23. tmp1 = NULL;
  24. return head;
  25. }
  26. }

亮点:

迭代:

使用了三个指针,重头到尾遍历一遍,两两反转,其实这个思路不难想到,也应该想到。

递归:

官方(十分值得学习):

合理地调整代码顺序可以让代码更加巧妙。

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

闽ICP备14008679号