链表数据结构

97 阅读1分钟

###链表

  • 一种常见的基础数据结构,是一种线性表,但是并不会按线性表的顺序来存储结构,而是在每一个节点里存到是下一个节点的指针(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();
    			}
    		}
    	}
    }