本文共 2122 字,大约阅读时间需要 7 分钟。
链表
和双端队列
特点first
和last
分别指向首节点
和尾节点
Node对象
),里面又维护了prev
,next
,item
三个属性,其中通过prev指向前一个,通过next指向后一个节点,最终实现双向链表public class LinkedListDemo01 { public static void main(String[] args) { // 模拟一个简单的双向链表 Node jack = new Node("jack"); Node tom = new Node("tom"); Node ll = new Node("ll"); // 连接三个节点, 形成双向链表 // jack => tom => ll jack.next = tom; tom.next = ll; // ll => tom => jack ll.prev = tom; tom.prev = jack; // 让first引用指向jack,也就是双向链表的首节点 Node first = jack; // 让last引用指向ll,也就是双向链表的尾结点 Node last = ll; // 演示从头到尾进行遍历 while (true) { if (first == null) { break; } //输出first信息 System.out.println(first); first = first.next; } System.out.println("========="); // 从尾到头遍历 while (true) { if (last == null) { break; } // 输出end信息 System.out.println(last); last = last.prev; } System.out.println("========="); // 演示链表添加对象/数据,是多么快速方便 // 要求在 tom和ll之间,插入一个对象java // 1.创建对象 Node java = new Node("java"); // jack => tom => ll java.prev = tom; java.next = ll; ll.prev = java; tom.next = java; // 让first引用指向jack,也就是双向链表的首节点 first = jack; // 演示从头到尾进行遍历 while (true) { if (first == null) { break; } //输出first信息 System.out.println(first); first = first.next; } }}// 定义一个Node类, Node对象表示双向链表的一个节点class Node { /** * 真正存放数据 */ public Object item; /** * 指向下一个节点 */ public Node next; /** * 指向上一个节点 */ public Node prev; public Node(Object item) { this.item = item; } @Override public String toString() { return "Node name = " + item; }}
转载地址:http://ihce.baihongyu.com/