反转链表

91 阅读1分钟
package org.example.demo;  
  
//反转链表  
//给你单链表的头指针 head 和两个整数 left 和 right ,  
// 其中 left <= right 。请你反转从位置 left 到位置  
// right 的链表节点,返回 反转后的链表 。  
public class ReverseListNodeSolution {  
public ListNode reverseBetween(ListNode head,int left,int right){  
    ListNode d=new ListNode(-1);  
    d.next=head;  
    ListNode pre=d;  
    for (int i = 0; i <left-1 ; i++) {  
        pre=pre.next;  
    }  
    ListNode cur=pre.next;  
    ListNode next;  
    for (int i = 0; i <right-left ; i++) {  
        next=cur.next;  
        cur.next=next.next;  
        next.next=pre.next;  
        pre.next=next;  
    }  
    return d.next;  
    }  
  
}  
  
class ListNode{  
    int val;  
    ListNode next;  
    ListNode(int val){  
        this.val=val;  
    }  
    ListNode(int val,ListNode next){  
        this.val=val;  
        this.next=next;  
    }  
}