뒤 집기 부분 단 방향 링크

제목: 하나의 머리 결점 head 와 두 개의 정수 from, to 를 정 하고 단일 링크 에서 첫 번 째 부터 두 번 째 노드 까지 뒤 집 습 니 다.
사고: 머리 를 바 꾸 는 상태 가 존재 할 수 있 습 니 다. 예 를 들 어 1 - > 2 - > 3, from = 1, to = 3, 마지막 에 머리 결점 이 3 - > 2 - > 1 로 변 할 수 있 습 니 다.그래서 고 개 를 바 꾸 는 상황 이 발생 했 는 지, 즉 from, to 와 링크 의 수미 길이 의 관 계 를 미리 판단 해 야 한다.  다음은 from - 1, to + 1 개의 노드 를 찾 아야 합 니 다.사실 from - 1 = = null 은 바 뀌 는 현상 을 설명 합 니 다.
요약: pre 가 비어 있 는 지 판단 하고 pre 를 초기 화 하려 면 다시 한 번 옮 겨 다 니 는 김 에 함께 통계 할 수 있 습 니 다. 하나의 계수 에 해당 합 니 다. from - 1 까지 계산 할 때 초기 화 를 하고 없 으 면 null 로 돌아 갑 니 다.
public class text {
	public Node reverse(Node head,int from,int to) {
		int len = 0;
		Node node1 = null;
		Node pre = null;
		Node last = null;
		while(node1!=null){
			len++;
			pre = len==from-1?node1:pre;   //   len++    ,   from   ,   pre            
			last = len==to+1?node1:last;    //  ,   len++      to     ,       ,    null
			node1 = node1.next;
		}
		if(from>to||from<1||to>len) {
			return head;
		}
		node1 = pre==null?head:pre.next;    //       ,  pre==null   ,      ,        
		Node node2 = node1.next;
		node1.next = last;       //       to+1
		Node next = null;
		while(node2!=last) {     //        
			next = node2.next;
			node2.next = node1;
			node1 = node2;
			node2 = next;
		}   
		if(pre!=null) {          //  pre     ,  pre(from-1)  
			pre.next = node1;
			return head;  
		}
		return node1;     //      ,            
	}  
}

좋은 웹페이지 즐겨찾기