package Linear;
/*
* 单链表中元素有3类字符,即字母,数字,其它
* 构造成3个环形链表(每个链表包含同一种字符,利用原表结点构造,头结点可另辟空间)
*/
public class H {
public static void decompose(Node h) {
Node A =new Node(); //存放数字
Node a =A;
Node B =new Node(); //存放字母
Node b =B;
Node C =new Node(); //存放其它
Node c =C;
Node p=h.next;
while (p!=null) {
if (p.data>='0'&&p.data<='9') {
h.next=p.next;
p.next=a.next;
a.next=p;
a=a.next;
p=h.next;
}else if (p.data>='a'&&p.data<='z'||p.data>='A'&&p.data<='Z') {
h.next=p.next;
p.next=b.next;
b.next=p;
b=b.next;
p=h.next;
}else {
h.next=p.next;
p.next=c.next;
c.next=p;
c=c.next;
p=h.next;
}
}
NodeTool.traverse(A);
NodeTool.traverse(B);
NodeTool.traverse(C);
}
public static void main(String[] args) {
Node h =NodeTool.CreateNodeList("dsa2321ABC*2*(0)");
NodeTool.traverse(h);
decompose(h);
}
}