本文章介绍一个关于java双向循环链表实现程序,有需要的朋友可参考一下。
例1
代码如下 | 复制代码 |
package com.xlst.util; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * 双向循环链表 * 完成时间:2012.9.28 * 版本1.0 * @author xlst * */ public class BothwayLoopLinked { /** * 存放链表长度的 map * * 如果简单使用 static int 型的 size 基本类型变量,则只能维护一个双向循环链表。 * 同时存在两个及以上双向循环链表时,数据会错乱 */ private static final Map sizeMap = new HashMap(); /** * 双向链表的 id * 一个双向一个唯一的 id * 根据这个id可以从 sizeMap 中取出当前链表的长度 */ private String linkedId = null; /** * 节点中的数据 */ private Object data = null; /** * 前一个节点(初始化时是自身) */ private BothwayLoopLinked prev = this; /** * 后一个节点(初始化时是自身) */ private BothwayLoopLinked next = this; public BothwayLoopLinked(){} /** * 在节点之后插入新节点 * @param newLinked 新插入的节点 */ public void insertAfter(BothwayLoopLinked newLinked){ // 原来的前节点与后节点 BothwayLoopLinked oldBefore = this; BothwayLoopLinked oldAfter = this.next; // 设置 newLinked 与原前节点的关系 oldBefore.next = newLinked; newLinked.prev = oldBefore; // 设置 newLinked 与原后节点的关系 oldAfter.prev = newLinked; newLinked.next = oldAfter; // 链表长度加一 changeSize( 1); // 绑定新节点的 linkedId newLinked.linkedId = this.linkedId; } /** * 在节点之前插入新节点 * @para |