一个简单的Java单链表

15 篇文章 0 订阅
2 篇文章 0 订阅

一直对链表不太熟悉, 今天看了下并写了下来, 错的地方请指正.(注意:有的地方判断不够严格).

这是一个单向链表:

package com.test;
public class Link {
    
    Node root;
    
    private class Node{
        String name ;
        Node next;
        
        public Node(String name){
            this.name = name;
        }

        public void add(Node node) {
            if(this.next == null){
                this.next = node;
            }else{
                this.next.add(node);
            }
        }

        public void print() {
            System.out.print(this.name+"--->");
            if(this.next != null){
                this.next.print();
            }
        }

        public boolean query(String name) {
            if(this.next == null){
                return false;
            }else if(this.next.name.equals(name)){
                return true;
            }else{
                return this.next.query(name);
            }
        }

        public void delete(Node preNode , String name) {
            if(this.name.equals(name)){
                preNode.next = this.next;
            }else{
                this.next.delete(this , name);
            }
        }
    }
    
    public void addNode(String name){
        if(this.root == null){
            this.root = new Node(name);
        }else {
            this.root.add(new Node(name));
        }
    }
    
    public boolean queryNode(String name){
        if(this.root == null){
            return false;
        }else if(this.root.name.equals(name)){
            return true;
        }else{
            return this.root.query(name);
        }
    }
    
    public void deleteNode(String name){
        if(this.root != null){
            if(this.root.name.equals(name)){
                this.root = this.root.next;
            }else{
                this.root.next.delete(root,name);
            }
        }
    }
    
    public static void main(String[] args) {
        Link link = new Link();
        link.addNode("根");
        link.addNode("1");
        link.addNode("2");
        link.addNode("3");
        link.addNode("4");
        link.print();
        System.out.println("");
        System.out.println(link.queryNode("1"));
        System.out.println("");
        link.deleteNode("2");
        link.print();
    }
    
    void print(){
        if(this.root != null){
             this.root.print();
        }
    }

}

打印结果:

   根--->1--->2--->3--->4--->
   true
   根--->1--->3--->4--->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值