数据增加: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类负责实现数据保存和节点关系匹配