单链表的插入实现原理是将待插入的结点作为下个结点,将下个结点作为下个结点。
单链表结点的插入:
//结点定义
public class Node {
// 定义一个数据域
int data;
// 定义一个指针域
Node next;
// 构造方法
public Node(int data) {
this.data = data;
}
// 获取结点中的数据
public int getData() {
return this.data;
}
}
//插入结点
public void insertNode(Node node) {
//保存下一个结点作为下下个结点
Node nextNext=next;
//将要插入的结点放到此结点后
this.next=node;
//将指针指向下下个结点完成插入结点
node.next=nextNext;
}
//测试代码
public class testNde {
public static void main(String[] args) {
// 新建结点
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
//追加结点
n1.append(n2).append(n3);
//插入结点前显示 1 2 3
n1.show();
n1.insertNode(new Node(4));
//插入结点后显示 1 4 2 3
n1.show();
}
}
单链表的删除实现原理是将前一个结点的指针绕过(要删除的)下个结点,指向下下个结点。
单链表结点的删除:
//删除节点
public void removeNode() {
//取下下个结点
Node nextNode=next.next;
//将当前结点指向下下个结点实现删除
this.next=nextNode;
}
//显示所有节点
public void show() {
//当前结点
Node currentNode1=this;
while(true) {
if(currentNode1.next!=null)
{
//循环打印出所有结点(不为尾结点)
System.out.print(currentNode1.data+" ");
//指针向后移一位
currentNode1=currentNode1.next;
}
else break;
}
System.out.println();
}
//测试代码
public class testNde {
public static void main(String[] args) {
// 新建结点
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
//追加结点
n1.append(n2).append(n3);
//删除前,打印1 2 3
n1.show();
n1.removeNode();
//删除后,打印 1 3
n1.show();
}
}