指的是可以使用链表实现数据的增加、修改、删除、查询操作
程序基本结构
在开发具体的可用链表操作之前,首先必须明确一个道理:Node类负责所有节点数据的保存以及节点关系的匹配,所以Node类不可能单独去使用。而上一节的实现里面Node类是可以单独使用的,外部可以绕过Link类直接使用Node类,这样明显没有任何意义存在。所以下面必须修改设计结构,让Node类只被Link类使用
这个时候使用内部类明显是一个合适的选择。内部类可以使用private定义,这样内部类只能被一个外部类所使用,另外一点,内部类可以方便的与外部类之间进行私有属性的直接访问
链表的开发结构
class Link{ // 链表类,外部只能看这一个类 // 定义在内部,主要为Link类服务 private class Node{ // 定义的节点类 private String data; // 保存数据 private Node next; // 引用关系 public Node(String data){ this.data = data; } // ===================以上为内部类============================ } private Node root; // 根结点 }
而随后主要就是进行代码的填充,以及功能的完善
数据增加
public void add(数据类型 变量)
如果要进行新数据的增加,则应该由Link类负责节点对象的增加,并且由Link类维护根节点,所有节点的关系匹配交给Node负责处理
class Link{ // 链表类,外部只能看这一个类 // 定义在内部,主要为Link类服务 private class Node{ // 定义的节点类 private String data; // 保存数据 private Node next; // 引用关系 public Node(String data){ this.data = data; } public void AddNode(Node newNode){ if(this.next == null){ // 当前的下一个节点为空 this.next = newNode; }else{ // 向后继续保存 this.next.AddNode(newNode); } } public void printNode(){ // 打印Node信息 System.out.println(this.data); if( this.next != null){ this.next.printNode(); } } // ===================以上为内部类============================ } private Node root; // 根结点 public void add(String data){ // 假设不允许有null if (data == null){ return ; } Node newNode = new Node(data); // 要保存的数据 if (this.root == null){ // 如果当前没有根节点,则设置为根节点 this.root = newNode; // 保存根节点 }else{ // 存在根节点,则到下一节点找保存数据 this.root.AddNode(newNode); } } public void print(){ // 打印所有Node信息 root.printNode(); } } public class LinkDemo{ public static void main(String args[]){ Link all = new Link(); all.add("Hello"); all.add("World"); all.add(null); all.print(); } }
此时使用了一个不许为null的判断。但并不是所有的链表都不许为null
原文:https://www.cnblogs.com/anyux/p/11874094.html