当前位置:   article > 正文

C++实现反转链表_反转链表c++实现

反转链表c++实现

        反转链表是数据结构里面一道很经典的题目,在秋招刷题时通常是广大同学们入门的第一题,具体反转前后链表的结构如下图所示:

对于反转链表通常有两组实现的方式,非递归法和递归法,具体的实现如下代码所示:

  1. #include <iostream>
  2. using namespace std;
  3. struct ListNode
  4. {
  5. int val;
  6. struct ListNode *next;
  7. };
  8. //1.非递归法反转链表
  9. ListNode* reverseList(ListNode* head)
  10. {
  11. ListNode *pre = NULL;
  12. ListNode *cur = head;
  13. ListNode *nex = NULL;
  14. while(cur)
  15. {
  16. nex = cur->next;
  17. cur->next = pre;
  18. pre = cur;
  19. cur = nex;
  20. }
  21. return pre;
  22. }
  23. //2.递归反转链表
  24. ListNode* reverseList2(ListNode* head)
  25. {
  26. if(head == NULL || head->next == NULL)
  27. return head;
  28. ListNode *pNode = reverseList33(head->next);
  29. head->next->next = head;
  30. head->next = NULL;
  31. return pNode;
  32. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号