当前位置:   article > 正文

牛客_将链表m到n节点间的元素进行反转_c++反转链表中m位置到n位置的元素

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

题目:将链表m到n节点间的元素进行反转

样例输入:a、b、c、d、e、f 6个ListNode结点的一个单链表 head(head是第一个元素)让其反转3到5

最终输出的val为  1 2 5 4 3 6    也就是3、4、5发生了反转成了5 、4、3

 

  1. public class Solution2 {
  2. /**
  3. * 定义的ListNode结构体
  4. */
  5. private static class ListNode {
  6. int val;
  7. ListNode next = null;
  8. ListNode(int val) {
  9. this.val = val;
  10. }
  11. }
  12. public static void solution(ListNode head, int m, int n) {
  13. if (head == null)
  14. return;
  15. //创建一个dummy的结点val为0作为头结点
  16. ListNode dummy = new ListNode(0);
  17. //将dummy作为头结点来指向输入链表的第一个结点
  18. dummy.next = head;
  19. //定义了一个prev结点
  20. ListNode prev = null;
  21. //start结点是开始遍历链表的结点,m之前的链表结点是不用进行反转,直接输出就可以
  22. //最终的prev指向的是原来链表前面一部分的结束的位置,start标记开始进行反转的第一个位置
  23. //测试样例中的prev指向的就是b结点val为2 start指向的就是c结点 val为3
  24. ListNode start = head;
  25. for (int i=1; i<m; i++) {
  26. prev = start;
  27. start = start.next;
  28. }
  29. //从m到n这个几个结点是需要进行反转
  30. //其中的temp作为一个临时结点,
  31. // 每一次循环在temp结点前面的已经反转,再调整后续节点一直到最终temp节点指向的是第n个节点的位置,
  32. // 此时prev就是指向了temp反转结束
  33. for (int i=m; i<n; i++) {
  34. ListNode temp = start.next;
  35. start.next = temp.next;
  36. temp.next = prev.next;
  37. prev.next = temp;
  38. }
  39. //最终输出链表,因为一开始的时候将dummy的val设置为了0,相当于设置了一个头结点
  40. while (dummy.next!=null) {
  41. System.out.println(dummy.next.val+" ");
  42. dummy.next = dummy.next.next;
  43. }
  44. }
  45. public static void main(String[] args) {
  46. //测试,建立6个listnode结点对应的val依次为1、2、3、4、5、6
  47. //最终让3到5的位置的链表发生反转,并重新打印出反转后的元素
  48. ListNode a = new ListNode(1);
  49. ListNode b = new ListNode(2);
  50. ListNode c = new ListNode(3);
  51. ListNode d = new ListNode(4);
  52. ListNode e = new ListNode(5);
  53. ListNode f = new ListNode(6);
  54. a.next=b;
  55. b.next=c;
  56. c.next=d;
  57. d.next=e;
  58. e.next=f;
  59. solution(a,3,5);
  60. }
  61. }

打印输出:

​​​​​​

符合预期。

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

闽ICP备14008679号