单链表反转,提供空间复杂度O(1),时间复杂度O(n),
递归实现:
public static void testReverseLinkNode(){
LinkNode E = new LinkNode("E", null);
LinkNode D = new LinkNode("D", E);
LinkNode C = new LinkNode("C", D);
LinkNode B = new LinkNode("B", C);
LinkNode A = new LinkNode("A", B);
LinkNode result = reverseLinkNode(A, null);
System.out.println();
}
public static LinkNode reverseLinkNode(LinkNode node, LinkNode pre){
LinkNode next = node.next;
node.next = pre;
if(null != next){
return reverseLinkNode(next, node);
}else{
return node;
}
}
非递归实现:
public static LinkNode reverseLinkNode1(LinkNode node){
if(null == node){
return node;
}
LinkNode pre = null;
while(null != node){
LinkNode next = node.next;
node.next = pre;
if(null == next){
return node;
}
pre = node;
node = next;
}
return node;
}