/**
* @Description 定义一个单链表
* @auther Eleven
* @create 2020-04-03 21:33
**/
public class Node {
//用于存储链表里面的数据
int data;
//用于存储连接表中下一个node的地址
Node next;
//用于初始化的时候给node中保存数据
public Node(int data) {
this.data = data;
}
//链表添加元素的方法 (用于在链表后添加元素)
public Node append(Node node){
//定义变量接受当前节点
Node currentNode = this;
//循环查找
while(true){
//当当前节点的一下个节点为空时,标示当前节点就是最后一个节点
if (currentNode.next == null){
//跳出循环
break;
}
//当当前节点的下一个节点不为空时,将下一个节点赋值给到当前节点
currentNode = currentNode.next;
}
//跳出循环说明找到了最后一个节点,将新的节点添加到最后一个节点的后面
currentNode.next=node;
//将当前对象返回出去
return this;
}
//删除节点
public void remove(Node node){
//找到要删除节点的下一个节点
Node nextNode = node.next();
//定义变量接受当前节点
Node currentNode = this;
//循环判断当前节点的下一个节点是否等于要移除的节点,如果不等于就继续循环,如果等于就跳出循环
while(currentNode.next != node){
//不等于就把当前的节点的下一个节点赋给当前节点
currentNode = this.next;
}
currentNode.next = nextNode;
}
//添加链表中的节点 就是将当前节点的下一个节点指向该节点,原下一个节点改为新增加的这个节点的下一个节点
public void after(Node node){
//定义变量接受当前节点
Node currentNode = this;
//获取原先当前节点的下一个节点
Node nextNext = currentNode.next;
//当前节点的下一个节点设置为新的节点
this.next = node;
//新节点的下一个节点设置为原先节点的下一个节点
node.next=nextNext;
}
//打印当前链表的数据
public void print(){
//定义变量接受当前节点
Node currentNode = this;
//如果当前节点不为空,输出当前节点的数据
while(currentNode !=null ){
//打印数据
System.out.print(currentNode.getData());
System.out.print(" ");
//将当前节点的下一个节点赋值给到当前节点
currentNode = currentNode.next;
}
}
//获取当前节点中的数据
public int getData(){
return this.data;
}
//获取当前节点的下一个节点
public Node next(){
return this.next;
}
//判断当前节点是否为最后一个节点
public boolean isLast(){
return this.next==null;
}
}
测试类
class Test{
public static void main(String[] args) {
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
n1.append(n2);
n1.append(n3);
n1.print();
/* n1.remove(n1);
n1.print();*/
Node n5 = new Node(5);
n2.after(n5);
n1.print();
}