标签:reverse linked list linkedlist
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL, m = 2 and n =
4,
return 1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
public ListNode reverseBetween(ListNode head, int m, int n) {
if (head==null) {
return null;
}
ListNode p =head,q=head,temp=null;
int i=0;
for(i=0;i<m-1;i++)
q=q.next;
for(i=0;i<m-2;i++)
p=p.next;
if(m==1)
{
for(i=0;i<n-m;i++)
{
//delete the node in the list
temp=q.next;
q.next=temp.next;
//insert the node in the list
temp.next=p;
p=temp;
}
head=p;
}else
{
for(i=0;i<n-m;i++)
{
//delete the node in the list
temp=q.next;
q.next=temp.next;
//insert the node in the list
temp.next=p.next;
p.next=temp;
}
}
return head;
}leetcode_92_Reverse Linked List II
标签:reverse linked list linkedlist
原文地址:http://blog.csdn.net/mnmlist/article/details/43493399