当前位置:   article > 正文

反转从位置 m 到 n 的链表_c++反转链表中m位置到n位置的元素

c++反转链表中m位置到n位置的元素

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

思路:首先得找到位置m和m前的节点pre,然后把m后面的节点一个接一个的插入到pre的后面去。

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode* reverseBetween(ListNode* head, int m, int n) {
  12. if (head == NULL || head->next == NULL || m >= n) {
  13. return head;
  14. }
  15. ListNode s(0), *pre = &s;
  16. s.next = head;
  17. ListNode * lr = head;
  18. for (int i = 1; i < m && lr != NULL; ++i) {
  19. pre = pre->next;
  20. lr = lr->next;
  21. }
  22. for (;m < n && lr != NULL && lr->next != NULL;++m) {
  23. ListNode * reserve = lr->next;
  24. lr->next = lr->next->next;
  25. reserve->next = pre->next;
  26. pre->next = reserve;
  27. }
  28. return s.next;
  29. }
  30. };

 

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

闽ICP备14008679号