标签:增加 类对象 操作 div 工具 out 关注 node system
通过分析发现
用户在操作的过程中完全没有必要去关心Node类是否在
所有的节点的引用关系不应该由用户处理,应该由一个专门的工具类来处理
下面需要定义一个类,来帮助客户端去隐藏所有链表中给出的细节操作
// 每一个链表实际上就是由多个节点组成的 class Node { // 定义一个节点 private String data; // 要保存的数据 private Node next; //要保存的下一个节点 // 每一个Node类对象都必须保存有相应的数据 public Node (String data){ // 必须有数据才有Node this.data = data; } public void setNext(Node next){ this.next = next; } public Node getNext(){ return this.next; } public String getData(){ return this.data; } } class Link { // 负责数据的设置和输出 public void add(String data){ // 添加数据 } public void print(){ // 输出数据 } } public class LinkDemo{ public static void main(String args[]){ Link link = new Link(); // 由这个类负责添加数据 link.add("hello"); link.add("world"); link.add("MLDN"); link.add("www"); link.print(); // 展示数据 } }
// 每一个链表实际上就是由多个节点组成的 class Node { // 定义一个节点 private String data; // 要保存的数据 private Node next; //要保存的下一个节点 // 每一个Node类对象都必须保存有相应的数据 public Node (String data){ // 必须有数据才有Node 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 // 第三次调用(Node) this = Link.root.next.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{ // 根结点已经存在了 // 随后增加的元素,应该交给节点来决定 // 从root节点之后找到合适的位置 this.root.AddNode(newNode); } } public void print(){ // 输出数据 //if(this.root != null){ // 现在存在根节点 //} root.printNode(); } } public class LinkDemo{ public static void main(String args[]){ Link link = new Link(); // 由这个类负责添加数据 link.add("hello"); link.add("world"); link.add("MLDN"); link.add("www"); link.print(); // 展示数据 } }
结果如下
链表的基本形式
通过以上的代码实际上就可以发现链表的基本操作特点:
客户端代码不用去关注具体的Node以及引用关系的细节,只关注于Link类中支持的方法
Link类的主要功能是控制Node类对象的产生和根结点
Node类主要负责数据的保存以及引用有关系的分配
标签:增加 类对象 操作 div 工具 out 关注 node system
原文地址:https://www.cnblogs.com/anyux/p/11872988.html