class Link { // 这属于一个链表的操作类
class Node { // 每一个保存的数据都被封装在节点之中
private String data ; // 保存的数据,现在只是String类型
private Node next ; // 保存下一个节点的引用
public Node(String data){
this.data = data ; // 通过构造传递具体的内容
}
public void addNode(Node newNode){
if(this.next == null){ // 当前节点的后面没有节点
this.next = newNode ;
} else {
this.next.addNode(newNode) ;
}
}
public void printNode(){
System.out.println(this.data) ; // 输出当前节点的内容
if(this.next != null){ // 当前节点下还有节点
this.next.printNode() ;
}
}
public boolean existsNode(String data){ // 至少存在要查找的数据
if(data.equals(this.data)){
return true ;
} else {
if(this.next != null){
return this.next.existsNode(data) ;
}
}
return false ;
}
public void deleteNode(Node previous,String data){
if(data.equals(this.data)){ // 满足,则要删除
previous.next = this.next ; // 空出当前节点
} else {
if(this.next != null){
this.next.deleteNode(this,data) ;
}
}
}
};
private Node root ; // 设置根节点
public void add(String data){
Node newNode = new Node(data) ;
if(this.root == null){ // 判断根节点是否为空
this.root = newNode ; // 第一个节点为根节点
} else {
this.root.addNode(newNode) ;
}
}
public boolean exists(String data){ // 判断是否存在
return this.root.existsNode(data) ;
}
public void delete(String data){ // 删除节点
if(this.exists(data)){ // 如果节点存在则删除
if(data.equals(this.root.data)){
this.root = this.root.next ; // 根节点后的下一个节点
} else {
this.root.next.deleteNode(this.root,data) ;
}
}
}
public void print(){ // 输出节点
this.root.printNode() ;
}
};
public class LinkDemo {
public static void main(String args[]){
Link link = new Link() ;
link.add("A") ;
link.add("B") ;
link.add("C") ;
link.add("D") ;
link.add("E") ;
link.delete("A") ;
link.delete("B") ;
link.print() ;