当前位置:   article > 正文

链表反转的两种方法_反转链表main

反转链表main

链表的算法操作链表反转

链表通过不连续的储存方式,自适应内存大小,以及指针的灵活使用,巧妙的简化了上述的内容。

链表的基本思维是,利用结构体的设置,额外开辟出一份内存空间去作指针,它总是指向下一个结点,一个个结点通过NEXT指针相互串联,就形成了链表。接下来让我们看一下如何对链表进行反转操作。

链表是表示一系列结点的数据结构。链表由结点组成,每个结点包含结点值以及指向其他结点的指针。

链表的种类包括单向链表、双向链表和循环链表。单向链表中的每个结点包含一个指针,指向链表中的后一个结点。双向链表中的每个结点包含两个指针,分别指向链表中的前一个结点和后一个结点。

方法一递归

c++版本

 

遍历到链表的最后一个节点,把最后一个节点作为新的头节点返回,在回洵的过程中,当前节点的下一个节点指向当前节点,当前节点的指向为空,相当于反转了链表。

 

  1. #include<iostream>
  2. using namespace std;
  3. struct ListNode
  4. {
  5. int val;
  6. ListNode* next;
  7. };
  8. //反转链表
  9. ListNode* reverseList(ListNode* pHead)
  10. {
  11. if (!pHead || !pHead->next)
  12. return pHead;
  13. ListNode* tail = reverseList(pHead->next);
  14. pHead->next->next = pHead;
  15. pHead->next = NULL;
  16. return tail;
  17. }
  18. //打印链表
  19. void printList(ListNode* head)
  20. {
  21. while (head)
  22. {
  23. cout << head->val;
  24. head = head->next;
  25. if (head)
  26. cout << "->";
  27. }
  28. cout << endl;
  29. }
  30. int main()
  31. {
  32. //创建链表
  33. ListNode* head = NULL;
  34. ListNode* cur = NULL;
  35. //创建5个节点,每个节点的值分别为12345
  36. for (int i = 1; i <= 5; ++i)
  37. {
  38. ListNode* node = new ListNode;
  39. node->val = i;
  40. node->next = NULL;
  41. if (head == NULL)
  42. {
  43. head = node;
  44. cur = node;
  45. }
  46. else
  47. {
  48. cur->next = node;
  49. cur = node;
  50. }
  51. }
  52. printList(head);
  53. printList(reverseList(head));
  54. return 0;
  55. }

方法二迭代法

c++版本

prev指向前一个节点,初始化为nullptr,使链表第一个节点指向nullptrcur指向当前正在遍历的节点,每次都使cur->next指向prev,然后prev指向cur。在此之前,要保存cur->next,用tmp保存,最后,cur指向tmp

 

  1. class Solution {
  2. public:
  3. ListNode* reverseList(ListNode* head) {
  4. ListNode* prev = nullptr;
  5. ListNode* cur = head;
  6. while (nullptr != cur) {
  7. ListNode* tmp = cur->next;
  8. cur->next = prev;
  9. prev = cur;
  10. cur = tmp;
  11. }
  12. return prev;
  13. }
  14. };

 

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

闽ICP备14008679号