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
相关文档:
Ubuntu Linux Install Sun Java Development Kit ( JDK ) and Java Runtime Environment ( JRE )
by Vivek Gite
Q.
How do I install Sun
Java Development Kit (JDK) and Java Runtime Environment (JRE) under
Ubuntu Linux? It appears that there are multiple JRE installed by
default under Ubuntu. ......
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对比,如 ......
JAVA是强类型的语言。当引用对象的时候,如果是上溯的话,需要强制转换。如你上面写的,
PiePlot p = (PiePlot)Plot,这就是上溯,生成实例时引用的是父类,需要强制转换,所以就需要加个(PiePlot)来声明Plot(Plot是父类)。 ......
/* 高手之作,本人谨以收藏者身份拿出共享供大家参考! */
/*
* 向量接口
*/
package dsa;
public interface Vector {
//返回向量中元素数目
public int getSize();
//判断向量是否为空
public boolean isEmpty();
//取秩为r的元素
public Object getAtRank(int r)
throws ......