什么是链表

模拟链表:

Node(节点):

package com.javaSe.List;
/*
单链表中的节点。
节点是单向链表中的基本单元。
每一个节点Node都有两个属性:
    一个属性:是存储的数据
    另一个属性:是下一个节点的内存地址
*/
public class Node {
    // 存储的数据
    Object date;
    
    // 下一个节点的内存地址
    Node next;
    
    
    public Node(){
    
    }
    
    public Node(Object date,Node next){
        this.date = date;
        this.next = next;
    }
}

链表:

package com.javaSe.List;


public class Link<E> {
    public static void main(String[] args) {
        Link<String> link = new Link<>();
        // 只能传String类型。
        link.add("abc");
        
        // 类型不匹配
        // link.add(123);
    }
    
    // 头节点
    Node header = null;
    
    int size = 0;
    
    public int size(){
        return size;
    }
    
    // 向链表中添加元素的方法(向末尾添加)
    // public void add(Object date){
    public void add(E date){
        // 创建一个新的节点对象
        // 让之前单链表的末尾节点next指向新节点对象。
        // 有可能这个元素是第一个,也可能是第二个,也可能是第三个
        if (header == null){
            // 说明还没有节点
            // new 一个新的节点作为头节点
            // 这个时候的头节点既是一个头节点,又是一个尾结点
            header = new Node(date,null);
        } else {
            // 说明头不是空
            // 头节点已经有了
            // 找出当前末尾节点,让当前末尾节点的next是新节点。
            Node currentLastNode = findLast(header);
            currentLastNode.next = new Node(date,null);
        }
        size++;
    }
    
    /**
     * 专门查找末尾节点的方法
     * @return
     */
    private Node findLast(Node node) {
        if(node.next == null){
            // 如果一个节点的next是null
            // 说明这个节点就是末尾节点
            return node;
        }
        // 程序能够到这里说明:node不是末尾节点。
        return findLast(node.next); // 递归算法
    }
    
    // 删除链表中某个数据的方法
    public void remove(Object obj){
    
    }
    
    // 修改链表中某个数据的方法
    public void modify(Object obj){
    
    }
    
    // 查找链表中某个元素的方法
    public int find(Object obj){
        return 1;
    }
}

测试类:

package com.javaSe.List;


public class NodeTest {
    public static void main(String[] args) {
        // 创建了一个集合
        Link link = new Link();
        // 往集合中添加元素
        link.add(100);
        link.add(200);
        link.add(300);
        
        // 获取元素的个数
        System.out.println(link.size());
    }
}
原文地址:https://www.cnblogs.com/xlwu/p/13415687.html