- 2014 微软笔试最后一提
public class Cycle implements Cloneable{
class LinkedListNode{
String v;
LinkedListNode next;
}
public LinkedListNode clone(LinkedListNode link){
LinkedListNode n = new LinkedListNode();
LinkedListNode p = n;
for (;link!=null;link=link.next){
n.next = new LinkedListNode();
n = n.next;
n.v = link.v;
}
return p.next;
}
LinkedListNode array2Linked(String[] vs){
LinkedListNode n = new LinkedListNode();
LinkedListNode p = n;
for (int i = 0; i < vs.length; i++) {
n.next = new LinkedListNode();
n = n.next;
n.v = vs[i];
}
return p.next;
}
LinkedListNode reverse(LinkedListNode link){
if (link==null)
return null;
LinkedListNode p = link;
LinkedListNode n1 = link.next, n2;
while (n1!=null){
n2 = n1.next;
n1.next = link;
link = n1;
n1 = n2;
}
p.next = null;
return link;
}
LinkedListNode merge(LinkedListNode link, LinkedListNode rlink){
LinkedListNode p = link;
while(link!=null && rlink!=null){
LinkedListNode n1 = link.next;
link.next = rlink;
LinkedListNode n2 = rlink.next;
rlink.next = n1;
link = n1;
rlink = n2;
}
return p;
}
public void toString(LinkedListNode link){
for ( ; link!=null ; link=link.next){
System.out.print(link.v + " ");
}
System.out.println();
}
}
class main{
public static void main(String[] args){
Cycle cc = new Cycle();
Cycle.LinkedListNode link = cc.array2Linked(new String[]{"1","2","3","4","5","6","7","8","9"});
cc.toString(link);
Cycle.LinkedListNode rl = cc.reverse(cc.clone(link));
cc.toString(rl);
cc.toString(cc.merge(link, rl));
}
}