一步一个阶梯,向人类进化。
分类: Java
2015-01-05 16:46:15
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.
比把整个单链表反序复杂一点,实际上只需要考虑几种特殊情况,即m和n是否位于边界。如果m=1,n=length,那么就是普通的单链表反序;否则,需要保存m的前一个节点和n的后一个节点,方便和反序好的中间部分连接起来。
单链表反序的基本思想无非就是设置两个指针p1和p2:
先将两个指针反序,即p2指向p1,然后p1和p2后移一位:
当p2移到null的时候,反序完成。此题为部分反序,在这种思路的基础上加入一些边界条件即可。