//链表定义
public class Chain {
Chain next=null;
int value=0;
Chain(int value){
this.value=value;
}
Chain(int value,Chain node){
this.value=value;
this.next=node;
}
}
// 反转链表 递归
public static Chain reverseLinkedList1(Chain node) {
if (node==null||node.next==null) {
return node;
}
Chain res=reverseLinkedList1(node.next);
node.next.next=node;
node.next=null;
return res;
}
// 反转链表 循环
public static Chain reverseLinkedList(Chain node) {
Chain resNode=null;
Chain tmp=null;
while (node!=null) {
tmp=node.next;
node.next=resNode;
resNode=node;
node=tmp;
}
return resNode;
}
//判断链表是否有环
public static boolean hasCycle(Chain node) {
if (node==null||node.next==null) {
return false;
}
Chain fst=node;
Chain sec=node.next;
while (fst!=sec) {
if (fst==null||sec.next==null) {
return false;
}
fst=fst.next;
sec=fst.next.next;
}
return true;
}
//链表排序
public static Chain sortChain(Chain node) {
if (node==null) {
return null;
}
Chain lastNode=null;
Chain tmp=node;
while (tmp.next!=lastNode) {
while (tmp.next!=lastNode) {
if (tmp.value>tmp.next.value) {
swap(tmp, tmp.next);
}
tmp=tmp.next;
}
lastNode=tmp;
tmp=node;
}
return node;
}
private static void swap(Chain n1,Chain n2) {
if (n1!=null&&n2!=null) {
Integer tmp=n1.value;
n1.value=n2.value;
n2.value=tmp;
}
}