模拟一个简单的双向链表
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; } } } // 定义一个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; } }