Question : Reverse a Linked List in groups of given size K.
问题:以K个元素为一组逆转链表。
/**
* @author YuHuang
* @vision 2011-10-03
* This program is only for algorithm training.
*
*/
class Node {
public int data;
public Node next;
}
class LinkedList {
private Node head;
private int size;
public LinkedList(int size){
this(new int[size]);
}
public LinkedList(int[] initArray){
int len = initArray.length;
if(len>0){
int count=len;
Node preNode=null;
while(--count>=0){
Node node = new Node();
node.data=initArray[count];
node.next=preNode;
preNode=node;
}
head = new Node();
head.next=preNode;
}
this.size = len;
}
public Node getHead() {
return this.head;
}
public void resetHead(Node node){
this.head.next=node;
}
}
public class ReverseLinkedListByGroup {
public static void doReverse(LinkedList list,int k){
Node prev=null,next=null;
Node r=null;
Node head=null;
int count;
if(list==null){
return;
}
Node current = list.getHead().next;
Node p;
while(current!=null){
count=k;
p=current;
while(current!=null && --count>=0){
next = current.next;
current.next=prev;
prev = current;
current = next;
}
if(r==null) {
r=prev;
}else{
head.next=prev;
}
head=p;
head.next=null; //remember to set null to head.next in order to stop the progrom
}
list.resetHead(r);
}
public static void main(String[] args){
int[] initArray=new int[]{1,2,3,4,5,6,7,8,9,10};
LinkedList list=new LinkedList(initArray);
Node node = list.getHead().next;
System.out.println("Before Reversed : ");
while(node!=null){
System.out.print(node.data+" ");
node = node.next;
}
System.out.println();
ReverseLinkedListByGroup.doReverse(list,3);
node=list.getHead().next;
System.out.println("After Reversed : ");
while(node!=null){
System.out.print(node.data+" ");
node = node.next;
}
System.out.println();
}
}
运行结果为:
Lab-Computer-0db2f6:JavaExercises labuser$ java ReverseLinkedListByGroup
Before Reversed :
1 2 3 4 5 6 7 8 9 10
After Reversed :
3 2 1 6 5 4 9 8 7 10
分享到:
相关推荐
java.lang.RuntimeException: Unsupported algorithm: HmacSHA1 解决方法,阿里云
赠送jar包:pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar; 赠送原API文档:pentaho-aggdesigner-algorithm-5.1.5-jhyde-javadoc.jar; 赠送源代码:pentaho-aggdesigner-algorithm-5.1.5-jhyde-sources.jar; ...
产生可能的集合 68 30.Algorithm Gossip: m元素集合的n个元素子集 71 31.Algorithm Gossip: 数字拆解 73 32.Algorithm Gossip: 得分排行 76 33.Algorithm Gossip: 选择、插入、气泡排序 78 34....
5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇后 9.Algorithm Gossip: 八枚银币. 10.Algorithm Gossip: 生命游戏. 11....
解决maven引入hive的jar包时依赖报错Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde in xxx的问题,maven路径org/pentaho/pentaho-aggdesigner-algorithm/5.1.5-jhyde/pentaho...
可以解决,maven引入hive jar包时,hive Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde 问题
解决 Cannot resolve org.pentaho:pentaho-aggdesigner-algorithm:5.1.5-jhyde jar放入D根目录执行: 以下命令加入本地maven库 mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-...
5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 13 8.Algorithm Gossip: 八皇后 16 9.Algorithm Gossip: 八枚银币 18 10.Algorithm ...
所提出的算法基于 k 最近邻方法,其中 k 的值是唯一的算法参数,用于控制最终解决方案的“平滑度”。 该算法的思想属于: 莫雷拉、阿德里亚诺... Concave hull:用于计算由一组点占据的区域的 k 最近邻方法.. 61-68。
它维护了一个双向链表,每个元素都有前一个和后一个指针,允许双向遍历。`CList`提供了丰富的成员函数,用于添加、删除、查找和遍历元素,使得操作链表变得非常方便。 在标准的`CList`用法中,我们可以使用`AddHead...
2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇 9....
1. **创建链表**:创建一个空链表,通常涉及到初始化头节点,头节点通常不存储数据,仅用于指向第一个元素。 2. **插入节点**:在链表的特定位置(如开头、末尾或中间)插入新节点。插入操作需要更新前后节点的指针...
开源项目"Algorithm::Evolutionary"就是这样一个专为执行简单进化计算任务而设计的库,它为开发者提供了一套强大的工具,以实现基于进化策略的解决方案。 "Algorithm::Evolutionary"库的核心特性在于其灵活的架构和...
org / pentaho / pentaho-aggdesigner-algorithm / 5.1.5-jhyde / pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar,解决maven引入hive的jar包时依赖报错Could not find artifact org.pentaho:pentaho-aggdesigner-...
这一过程可以被归纳为一个循环不变量:在处理第j个元素时,前j-1个元素已经正确排序。 **2. 时间复杂度分析(b)** - **问题描述:** 这种排序方法的时间复杂度是多少? - **解答要点:** 该方法的时间复杂度由二...
本文将深入探讨开源项目"Algorithm::MatchingModel",这是一个用Perl语言编写的库,专为解决双面匹配问题而设计。 首先,我们要理解什么是双面匹配问题。在现实世界中,许多匹配场景涉及到两方之间的匹配,如学生与...