写的不是很好,没有加校验,但是大致就是这个意思吧
public class CreatLinked<T> {
// 指向容器的首指针
private Inner<T> first;
// 指向容器的尾指针
private Inner<T> last;
// 返回容器的元素个数
private int size = 0;
// 无参构造器
public CreatLinked() {
first = null;
last = null;
}
// 返回内部类的对象
// add增加一个元素,默认添加到最后
public void add(T t) {
Inner<T> newEnum=new Inner<T>(last,null,t);
if(first==null&&size==0){
first=newEnum;
last=newEnum;
}else{
last.next=newEnum;
last=newEnum;
}
size++;
}
//返回当前容器元素的个数
public int size(){
return this.size;
}
//返回索引的那个位置的元素
public T get(int n){
return getInner(n).eunm;
}
//返回索引某个位置的节点
private Inner<T> getInner(int n){
if(this.size()==0){
return null;
}else{
Inner<T> x=this.first;
for(int i=0;i<n;i++)
x=x.next;
return x;
}
}
//删除某一个位置的元素,写的不好,没有释放该节点的指针
public void remove(int n){
if(n==0){
first=first.next;
}else if(n==(size-1)){
last=last.pre;
}else{
Inner r=getInner(n);
r.next.pre=r.pre;
r.pre.next=r.next;
}
size--;
}
/** 这里把内部类设置为private应该是防止外部类的随意调用 */
private static class Inner<T> {
private Inner<T> next;
private Inner<T> pre;
private T eunm;
Inner(Inner<T> pre, Inner<T> next, T t) {
this.pre = pre;
this.next = next;
this.eunm=t;
}
}
}