Java双链表的实现
来源:互联网 发布:linux的shutdown命令 编辑:程序博客网 时间:2024/05/22 01:57
public class DoubleLink <T>{ //表头 privte DNode<T> mHead; //节点个数 private int mCount; //双向链表节点对应的结构体 private class DNode<T>{ public DNode prev; public DNode next; public T value; public DNode(T value,DNode prev, DNode next){ this.value=value; this.prev=prev; this.next=next; } } //构造函数 public DoubleLink(){ //创建表头,注意表头没有存储数据 mHead=new DNode<T>(null,null,null); mHead.prev=mHead.next=mHead; //初始化节点个数 mCount=0; } //返回节点的个数 public int size(){ return mCount; } //返回链表是否为空 public boolean isEmpty(){ return mCount==0; } //获取index位置的节点 privte DNode<T> getNode(int index){ if(index<=0||index>mCount) throw new IndexOutOfBoundsException(); //正向查找 if(index<=mCount/2){ DNode<T> node=mHead.next; for(i=0;i<index;i++) node=node.next; return node; } //反向查找 DNode<T> rNode=mHead.prev; int rIndex=mCount-index-1; for(int j=0;j<rIndex;j++) rNode=rMode.prev; return rNode; } //获取第index位置节点的值 public T getIndex(){ return getNode(index).value; } //获取第一个节点的值 public T getFirst(){ return getNode(0).value; } public T getLast(){ return getNode(mCount-1).value; } //将节点插入到index位置之前 public void insert(int index, T t){ if(mCount==0){ DNode<T> node=new DNode<T>(t,mHead,mHead.next); mHead.next.prev=node; mHead.next=node mCount++; return ; } DNode<T> iNode=getNode(index); DNode<T> tNode=new DNode<T>(t,iNode.prev,iNode); iNode.prev.next=tNode; iNode.prev=tNode; mCount++; return; } //将节点插入到第一个节点 public void insertFist(T t){ insert(0,t); } //将节点插入到最后一个节点 public void appendLast(T t){ DNode<T> node=new DNode<T>(t,mHead.prev,mHead); mHead.prev.next=node; mHead.prev=node; mCount++; } //删除index位置节点 public void delNode(int index){ DNode<T> node=getNode(index); node.prev.next=node.next; node.next.prev=node.prev; node=null; mCount--; } //删除第一个节点 public void deleteFirst(){ delNode(0); } //删除最后一个节点 public void deleteFirst(){ delNode(mCount-1); }}
阅读全文
0 0
- JAVA双链表的实现
- Java双链表的实现
- Java双链表的实现
- JAVA实现的时钟实现
- 【Java】Java中多态的实现
- “网络蚂蚁”的Java实现
- Java的MD5实现
- java md5 的实现
- java md5 的实现
- java md5 的实现
- “网络蚂蚁”的Java实现
- “网络蚂蚁”的Java实现
- java数据库的实现
- java中回调的实现
- MD5 的 Java 实现
- java 实现的队列
- java md5 的实现
- Base64的java实现
- init函数详解
- HDU -- 5600 N bulbs 【思维 + 规律】
- NYOJ 66 分数拆分
- iOS开发人员使用TestFlight构建测试版本
- java的锁机制
- Java双链表的实现
- urlretrieve下载的问题
- web显示实时时间动态刷新
- C++学习笔记——类的初探
- 1 rocketMQ producer,consumer基本特征
- nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式
- 2.1 委托
- 接口优于抽象类
- 自定义PopupWindow的使用