您的位置:首页 > 理论基础 > 数据结构算法

链表数据结构

2016-06-06 11:21 423 查看

链表数据结构

链表数据结构是一种常见的数据结构,它是一种线性表,但并不是按线性顺序存储数据的,而是在每一个节点里存到下一个节点的指针。

该数据结构比较适合频繁的进行插入和删除操作。

该数据结构常与递归一起使用

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

首先定义一个节点管理的类,用内部类表示每一个节点的对象。在内部类里定义它的属性,比如:节点名,指向下一个节点的指针。

又因为该数据结构多用于插入和删除的操作,我们就在内部类中定义这些方法。

//节点管理类
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();
}
}


测试结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 链表 java