单链表java实现及相关操作(版本2)
版本2入下:还是先写一个Node,相比版本1,在Node里面增加了addNode方法和printNode()方法。
package lianbiaoDemo02;
public class Node {
private Node next;
private String data;
public Node() {
}
public Node(String data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public void addNode(Node node) {
if(this.next==null) {
this.next=node;
}else {
this.next.addNode(node);//递归
}
}
public void printNode() {
System.out.println(this.getData());
if(this.next!=null) {
this.next.printNode();
}
}
}
再写一个Link类,写了add方法调用了Node类里面的addNode,写了print方法,调用了Node里面pintNode方法。
package lianbiaoDemo02;
public class Link {
private Node root;//根节点
public void add(String data) {
Node node=new Node(data);
if(this.root==null) {
this.root=node;
}else {
this.root.addNode(node);
}
}
public void print() {
if(this.root!=null) {
this.root.printNode();
}
}
}
最后是一个测试方法:
package lianbiaoDemo02;
public class LinkTest {
public static void main(String[] args) {
Link link=new Link();
link.add("葫芦娃1");
link.add("葫芦娃2");
link.add("葫芦娃3");
link.add("葫芦娃4");
link.add("葫芦娃5");
link.print();
}
}
版本2还是存在缺陷,因为在main方法中还是可以对Node进行操作。接下来在版本3中采用内部类的方式