翻转链表
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); } }
相关文章推荐
- 翻转链表
- 链表翻转程序
- C++循环链表中进行元素的翻转
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 翻转部分链表
- Reverse Linked List II 翻转链表II
- [Lintcode]翻转链表
- 练手小程序2.链表翻转问题
- 链表的生长于翻转
- 链表的翻转
- 单链表翻转
- LeetCode 92. Reverse Linked List II(翻转链表)
- 链表翻转(按K个一组)
- lintcode,翻转链表
- 链表翻转递归实现
- C++链表翻转
- Java 倒置(翻转)链表的两种实现
- lintcode-450-K组翻转链表
- 链表翻转,指定区间
- 翻转链表