package summer;
//每一个链表实际上是由多个节点组成的
class Node{
private String data; //要保存的数据
private Node next; //要保存的下一个节点
//每一个类对象必须保存有相应的数据
public Node(String data) {
this.data = data;
}
public void setNext(Node next) {
this.next = next;
}
public Node getNext() {
return this.next;
}
public String getData() {
return this.data;
}
//实现节点的添加
//第一次调用(Link) this = Link.root
//第二次调用(Node) this = Link.root.next
//第三次调用(Node) this = Link.root.next.next
public void addNode(Node newNode) { //实现节点的添加
if(this.next ==null) { //当前节点的下一个节点为空
this.next = newNode; //保存新节点
}else { //当前节点后面还有节点
//当前节点的下一个节点继续保存
this.next.addNode(newNode);
}
}
//第一次调用(Link) this = Link.root
//第二次调用(Node) this = Link.root.next
public void printNode() {
System.out.println(this.data);
if(this.next != null) {
this.next.printNode();
}
}
}
//需要进行Node类的关系处理
class Link{ //负责数据的增加和输出
private Node root; //根节点
public void add(String data) { //增加数据
//为了设置数据的先后关系,把data包装在Node对象里
Node newNode = new Node(data);
if(this.root == null) {
this.root = newNode;
} else {
//随后增加的元素应由节点来决定
this.root.addNode(newNode);
}
}
public void print() { //输出数据
if(this.root != null) {
this.root.printNode(); //交由Node类输出
}
}
}
public class LinkDemo {
public static void main(String[] args) {
Link link = new Link();
link.add("Hello");
link.add("world");
link.add("baidu");
link.add("WWW");
link.print(); //展示数据
}
}
Link类主要控制Node对象的产生和根节点
Node类主要负责数据的保存以及引用关系的分配