链表数据结构

链表

  • 一种常见的基础数据结构,是一种线性表,但是并不会按线性表的顺序来存储结构,而是在每一个节点里存到是下一个节点的指针(Pointer)
        package com;
    
        public class NodeManager {
    
        private Node root; //根节点
        
        //添加节点
        public void addNode(String name){
            //如果根节点是空的,那么久新创建
            if (root == null) {
                root = new Node(name);
            } else {
                //否则直接调用添加的方法
                root.add(name);;
            }
        }
        //删除节点
        public void delNode(String name){
            //如果根节点的名字和要删除的是一样的
            if (root.getName().equals(name)) {
                //那么就删除根节点,这个时候根节点的next为根节点
                root = root.next;
            } else{
                //要么就删除方法
                root.delete(name);
            }
        }
        //打印链表
        public void printNode(){
            if (root != null) {
                System.out.print(root.getName() + "-->");
                root.print();
                System.out.println();
            }
        }
        
        //每个节点对象
        class Node{
            private String name;
            private Node next ;//表示当前节点的下一节点
            
            public String getName(){
                return name;
            }
            
            public Node(String name){
                this.name = name;
            }
            
            //添加节点
            public void add(String name){
                //如果this.next == null,那么就直接创建一个新的节点
                if (this.next == null) {
                    this.next = new Node(name);
                } else {
                    //否则的话直接添加
                    this.next.add(name);
                }
            }
            
            //删除节点
            public void delete(String name){
                if (this.next != null) {
                    if (this.next.name.equals(name)) {
                        this.next = this.next.next;
                    } else{
                        this.next.delete(name);
                    }
                }
            }
            
            //输出节点
            public void print(){
                //当前对象如果不为空,那么久输出
                if (this.next != null) {
                    System.out.print(this.next.getName() + "--->");
                    this.next.print();
                }
            }
        }
    }

你可能感兴趣的:(链表数据结构)