当前位置:   article > 正文

反转链表2—链表m到n位置的反转_反转链表的m到n个元素

反转链表的m到n个元素

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

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

示例:

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

思路:

    反转m到n之间   注意  第m个节点会是反转部分的最后一个  即是尾巴 所以要记录下来  而第m-1个节点将会是这一部分的前一个节点  即为头  也要记录下来  然后对内部反转  最后将头和尾做处理

  1. public ListNode reverseBetween(ListNode head, int m, int n) {
  2. // 判断是否为空
  3. if (head == null) {
  4. return null;
  5. }
  6. //移动两个指针直到它们达到开始边界
  7. ListNode cur = head, prev = null;
  8. while (m > 1) {
  9. prev = cur;
  10. cur = cur.next;
  11. m--;
  12. n--;
  13. } //退出循环时 cur恰好达到第m个点
  14. // 记录头和尾
  15. ListNode con = prev;
  16. ListNode tail = cur;
  17. // Iteratively reverse the nodes until n becomes 0.
  18. ListNode inNext = null;
  19. while (n > 0) {
  20. inNext = cur.next;
  21. cur.next = prev;
  22. prev = cur;
  23. cur = inNext;
  24. n--;
  25. }
  26. //退出循环时 pre来到第n个点 cur来到第n+1个点
  27. if (con != null) {
  28. con.next = prev; //连接头
  29. } else {
  30. head = prev;
  31. }
  32. // cur已经来到第n+1个点
  33. tail.next = cur; //连接尾
  34. return head;
  35. }

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

闽ICP备14008679号