链表数据结构

来源:互联网 发布:淘宝网折800唯影女装 编辑:程序博客网 时间:2024/05/21 22:31

链表数据结构

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

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

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

//节点管理类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 0
原创粉丝点击