Java基于双向链表实现列表结构(算法源码)
/* 高手之作,本人谨以收藏者身份共享源码,供大家参考之! */
/*
* 列表ADT接口
*/
package dsa;
public interface List {
//查询列表当前的规模
public int getSize();
//判断列表是否为空
public boolean isEmpty();
//返回第一个元素(的位置)
public Position first();
//返回最后一个元素(的位置)
public Position last();
//返回紧接给定位置之后的元素(的位置)
public Position getNext(Position p)
throws ExceptionPositionInvalid, ExceptionBoundaryViolation;
//返回紧靠给定位置之前的元素(的位置)
public Position getPrev(Position p)
throws ExceptionPositionInvalid, ExceptionBoundaryViolation;
//将e作为第一个元素插入列表
public Position insertFirst(Object e);
//将e作为最后一个元素插入列表
public Position insertLast(Object e);
//将e插入至紧接给定位置之后的位置
public Position insertAfter(Position p, Object e)
throws ExceptionPositionInvalid;
//将e插入至紧靠给定位置之前的位置
public Position insertBefore(Position p, Object e)
throws ExceptionPositionInvalid;
//删除给定位置处的元素,并返回之
public Object remove(Position p)
throws ExceptionPositionInvalid;
//删除首元素,并返回之
public Object removeFirst();
//删除末元素,并返回之
public Object removeLast();
//将处于给定位置的元素替换为新元素,并返回被替换的元素
public Object replace(Position p, Object e)
throws ExceptionPositionInvalid;
//位置迭代器
public Iterator positions();
//元素迭代器
public Iterator elements();
}
/*
* 基于双向链表实现列表结构
*/
package dsa;
public class List_DLNode implements List {
protected int numElem;//列表的实际规模
protected DLNode header, trailer;//哨兵:首节点+末节点
//构造函数
public List_DLNode() {
numElem = 0;//空表
header = new DLNode(null, null, null);//头节点
trailer = new DLNode(null, header, null);//尾节点
header.setNext(trai
相关文档:
及时消除不使用的对象的引用, 理论上, 带有内存管理的语言是不存在内存泄漏的, 但是如果对对象的操作不当,也是可能会造成内存泄漏. 如有一个stack, 其pop函数如下. public Object pop() { if( Element.length() == 0) return nu ......
public class Bean1 {
private String strValue;
private int intValue;
private List listValue;
private Set setValue;
private String[] arrayValue;
private Map mapValue;
public String getStrValue() {
return strValue;
}
public void setStrValue(String strValue) {
t ......
二分查找法和线性查找法
二分查找法是一种比普通线性查找快得多的查找算法,但只适用于有序集合当中。拿升序排序后的整型数组来说,二分法具体的实现原理是:先把待查找数a与数组中间的那个数x对比,如果相等,直接返回x的索引;如果a大于x,则排除掉数组的前面一半(包括x),接着拿a与剩下一半数组中间的那个数x对比,如 ......
maven 相信很多人都用到听过,用的人应该不是很多,至少我们公司1000人级别的IT部门都没用。
复杂程度决定工具的使用情况,刚入门的程序员如果没有一种良好的学习心态看了肯定会对ant有点抱怨(使得你不能很快在ec上看到结果)。况且不说maven做的好不好,起码能给大型项目的管理提供一种新的思路。自动化能减少很多时间和交 ......
从JavaSE 到JavaEE
再从corejava1,corejava11,Java Language Specification, Second(Third) Edition, Think in java,Data Structure java depth Adventrue)
转到JavaEE(EJB,Spring,Hibernate,Webwork,struts1,strut2,jsp,servlet)
从开源组织再到自组织,再到corejava1,corejava11
到JavaWebServer,java Web Prog ......