给定一个单向链表的头结点head,以及两个整数from和to,在单向链表上把第from个节点到第to个节点这一部分进行反转。
public class ReversePart { public class Node{ public int value; public Node next; public Node (int data){ this.value=data; } } public Node reversePart(Node head,int from,int to){ int len=0; Node node1=head; Node fPre=null; Node tPos=null; while(node1!=null){ len++; fPre=len==from-1?node1:fPre; tPos=len==to+1?node1:tPos; node1=node1.next; } if(from>to||from<1||to>len){ return head; } node1=fPre==null?head:fPre.next; Node node2=node1.next; node1.next=tPos; Node next=null; while(node2!=tPos){ next=node2.next; node2.next=tPos; node1=node2; node2=next; } if(fPre!=null){ fPre.next=node1; return head; } return node1; } }
|
近期评论