import java.util.LinkedList;
/**
public class LinkedList01 {
public static void main(String[] args) {
Node node1 = new Node("1");
Node node2 = new Node("2");
Node node3 = new Node("3");
node1.next = node2;
node2.next = node3;
node2.pre = node1;
node3.pre = node2;
Node first = node1;
Node last = node3;
bianli1(first);
System.out.println("============");
// 遍历从尾到头
bianli2(last);
// 添加一个节点 在 1-2之间 1.5
Node node1_5 = new Node("1.5");
node1.next = node1_5;
node1_5.next = node2;
node2.pre = node1_5;
System.out.println("============");
bianli1(first);
// 删除一个节点 2
System.out.println("============");
removeNode(node1);
first = node1_5;
bianli1(first);
}
// 删除节点
private static void removeNode(Node removeNode) {
if(removeNode.next == null) {
// 最后一个
removeNode.pre.next = null;
return;
}
if(removeNode.pre == null) {
// 第一个
removeNode.next.pre = null;
return;
}
// 在中间 ①将上一个节点的next指向 removeNode 的后一个节点
removeNode.pre.next = removeNode.next;
// ② 将后一个节点的 pre 指向 removeNode的前一个节点
removeNode.next.pre = removeNode.pre;
}
private static void bianli1(Node first) {
// 遍历 从头到尾
while (true) {
if(first == null) {
break;
}
System.out.println(first);
// 将指针指向后面一位
first = first.next;
}
}
private static void bianli2(Node last) {
// 遍历 从尾到头
while (true) {
if(last == null) {
break;
}
System.out.println(last);
// 将指针指向后面一位
last = last.pre;
}
}
}
// 定义一个Node类,Node的对象则表示双向链表的一个节点 class Node {
public Object item; //真正存放的数据
public Node pre; // 指向上一个节点
public Node next; // 指向下一个节点
public Node(Object name) {
this.item = name;
}
public String toString() {
return "node name" + item;
}
}
```