单链表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中采用内部类的方式

posted @ 2019-07-11 20:38  修仙小华  阅读(113)  评论(0编辑  收藏  举报