LinkedList,又名为“链表”,是一种常见的数组结构。在Java语言中,可以使用面向对象的方法来创建单向链表。那么,在创建之前,我们必须对其结构有些简单了解。
1. LinkedList的结构特征
LinkedList(链表)的结构很简单,它是由一个一个的“节点”(Node)不断相连,最终形成一个像“链”一样的结构。从下图可以对链表的结构有个直观的了解。
· 结点(Node)
由上图可以看到,结点是一个链表存在的基本要素。因此,创建链表时,我们就可以把“结点”定义为一个类。而这个类的内部就包含节点的两个部分:“数据”和“下个节点的地址”。以下为相关类结构定义:
class Node{
// 一个节点包括data,next两个属性
private String data;
private Node next;
· 根(Root)
一个链表结构想要不断向下延伸,必须要有一个“源头”。此处的“源头”又叫做“根节点(root)”,根节点也属于节点,因此也可以使用创建节点的办法创建根节点。
有了以上两个要素后,接下来就可以对节点进行操作了。之前我们了解过数组,我们可以对数组中的数据进行“添加”,“删除”,“遍历”,“查询”的操作。而链表也可以实现同样的办法:
2. 对单个节点进行操作
简单来讲,要想实现对整个链表进行操作,首先要考虑的是对单个节点进行操作。
增加节点
public void add(Node newNode){
// 添加新节点
if (this.next == null){
// 如果下一个节点为空,即可直接添加
this.next = newNode;
}else {
// 否则再次调用Node方法,查找下一个可用的空间
this.next.add(newNode);
}
}
删除节点
public void delete(Node pre, String data){
// 删除方法
if (data.equals(this.data)){
// 数据相同时,把下一个节点地址覆盖到上一个节点地址即可
pre.next = this.next;
}else {
// 同样是判断还有没有下一个节点
if (this.next!=null){
this.next.delete(this, data);
}
}
}
遍历打印节点
public void print(){
// 打印方法,直接打印data数据,并判断是否有下个节点,有的话就继续打印
System.out.print(this.data+"-->");
if (this.next!=null){
this.next.print