链表数据结构
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- [C/C++]反转链表
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序