java简单模拟双向链表
java简单模拟双向链表
模拟一个简单的双向链表
Node类
// 定义一个Node类,node对象表示双向链表的一个节点
class Node {
public Object item;
public Node next;
public Node pre;
public Node(Object item) {
this.item = item;
}
@Override
public String toString() {
return "Node name => " + item;
}
}
测试类
public class Demo {
public static void main(String[] args) {
// 创建三个节点
Node item1 = new Node("item1");
Node item2 = new Node("item2");
Node item3 = new Node("item3");
// 链接三个节点,形成双向链表
// item1 -> item2 -> item3
item1.next = item2;
item2.next = item3;
// item3 -> item2 -> item1
item3.pre = item2;
item2.pre = item1;
// 定义first和last节点分别指向
Node first = item1;
Node last = item3;
// 双向链表插入数据
Node newItem = new Node("newItem");
// 在item1和item2之间插入
item1.next = newItem;
newItem.pre = item1;
newItem.next = item2;
item2.pre = newItem;
System.out.println("从头到尾遍历");
// 从头到尾遍历
while (true) {
if (first == null) {
break;
}
// 打印头节点
System.out.println(first);
// 移动指向
first = first.next;
}
System.out.println("从尾到头遍历");
// 从尾到头遍历
while (true) {
if (last == null) {
break;
}
// 打印尾节点
System.out.println(last);
// 移动指向
last = last.pre;
}
}
}