链表数据结构

链表数据结构

链表数据结构是一种常见的数据结构,它是一种线性表,但并不是按线性顺序存储数据的,而是在每一个节点里存到下一个节点的指针。
该数据结构比较适合频繁的进行插入和删除操作。
该数据结构常与递归一起使用

举例说明该链表结构的写法

首先定义一个节点管理的类,用内部类表示每一个节点的对象。在内部类里定义它的属性,比如:节点名,指向下一个节点的指针。
又因为该数据结构多用于插入和删除的操作,我们就在内部类中定义这些方法。

//节点管理类
class NadeManager{
    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)){
            root = root.next;
        }else{
            root.del(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){
            if(this.next == null){
                this.next = new Node(name);
            }else{
                this.next.add(name);//递归  是this.next调用了add方法
            }
        }
        public void del(String name){
            if(this.next != null){
                if(this.next.name.equals(name)){
                    this.next = this.next.next;
                }else{
                    this.next.del(name);
                }
            }
        }
        public void print(){
            if(this.next != null){
                System.out.print(this.next.getName() + "->");
                this.next.print();
            }
        }
    }
}

在这种情况下,插入和删除操作的性能就比使用数组要高的多了。测试类如下:

public class factorial{
    public static void main(String[] args){
        NadeManager nm = new NadeManager();
        nm.addNode("0");
        nm.addNode("1");
        nm.addNode("2");
        nm.addNode("3");
        nm.addNode("4");
        nm.addNode("5");
        nm.addNode("6");
        nm.addNode("7");
        nm.addNode("8");
        nm.addNode("9");
        nm.printNode();
        nm.delNode("4");
        nm.printNode();
    }
}

测试结果:
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值