数据增加:public void add(Object data)

数据增加:public void add(Object data)

如果要想在链表之中实现一个数据的增加操作,则应该首先在链表里面提供有一个追加方法,而这个追加方法的参数应该是Object类型.

1.在Link类中追加新的方法定义。 

class Link{//负责链表的操作  
	//将Node定义为内部类,表示Node类只为Link类服务
	private class Node{//负责数据与节点关系的匹配
private Object data;//保存节点的数据	
	private Node next;//保存下一个节点
	public Node(Object data) {
		this.data=data;
	}
	}
	//-----------------以下为Link类定义-------------
	public void add(Object data) {
		if(data==null) {//认为追加规定不允许存放空值
			return ;//方法结束
		}
	}
}

2.那么该如何进行数据的保存呢?应该首先定义个根节点,才可以陆续添加后面的子节点。这个节点的类型一定就是Node,则应该在Link类里面追加有一个Node类的属性。   

private Node root;//属于根节点,没有根节点就无法进行数据的保存

3.后续节点操作:

class Link{//负责链表的操作
	//将Node定义为内部类,表示Node类只为Link类服务
        private class Node{//负责数据与节点关系的匹配
        private Object data;//保存节点的数据	
	    private Node next;//保存下一个节点
	    public Node(Object data) {
		 this.data=data;
	                             }
	    //第一次调用:this=Link.root
	    //第二次调用:this=Link.root.next
	    //第三次调用:this=Link.root.next.next
	    public void addNode(Node newNode) {//处理节点关系
	    	if(this.next==null) {//当前节点下一个为空,表示可以保存 
	    		this.next=newNode;
	    	}else {//当前节点的下一个不为空
	    		this.next.addNode(newNode);
	    		
	    	      }
	                                      }
	    }
//-----------------以下为Link类定义-------------
          private Node root;
//root存第一个数据,属于根节点,没有根节点就无法进行数据的保存
	public void add(Object data) {
		if(data==null) {//人为追加规定不允许存放空值
			return ;//方法结束
		}
        //如果想要进行数据的保存,那么必须将数据封装在Node节点类里面 
		//如果没有封装,则无法确认好节点的先后顺序 
		Node newNode =new Node(data);
    if(this.root==null) {//当前并没并没有根节点
	this.root=newNode;//第一个节点设置为根节点 
}else {//根节点已经存在了
//应该把此时的节点顺序的处理交给Node类自己完成
	this.root.addNode(newNode); 
	
}	  
}

}

public class TestLinkDemo{

	public static void main(String[] args) {
	  Link all=new Link();
	  all.add("hello");
	  all.add("world");
	  all.add("123");
	}
}     

这个时候理论上如果内存够大,那么可以存放的内容就非常多了,而整个代码的实现关键就在于Node类负责实现数据保存和节点关系匹配

  

猜你喜欢

转载自blog.csdn.net/weixin_41197830/article/details/80216151