您的位置:首页 > 其它

翻转链表

2014-10-27 12:09 232 查看
链表翻转。给出一个链表和一个数k,比如,链表为1→2→3→4→5→6,k=2,则翻转后2→1→6→5→4→3,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→6→5,用程序实现
import java.util.LinkedList;

public class RotateLinkedList {

public	static  void ReverseLinkList(LinkedList<Integer> link,int from, int to){
while(from<to){
int t=link.get(from);
link.set(from++, link.get(to));
link.set(to--,t);
}
}

public static void LeftRotateString(LinkedList<Integer> link,int n,int m)
{
m %= n;               //若要左移动大于n位,那么和%n 是等价的
ReverseLinkList(link, 0, m - 1); //反转[0..m - 1],套用到上面举的例子中,就是X->X^T,即 abc->cba
ReverseLinkList(link, m, n - 1); //反转[m..n - 1],例如Y->Y^T,即 def->fed
}

public static void main(String[] args) {
LinkedList<Integer> link=new LinkedList<Integer>();
link.add(1);
link.add(2);
link.add(3);
link.add(4);
link.add(5);
link.add(6);
LeftRotateString(link,link.size(),8);
System.out.println(link);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: