用java数组实现基本链表和可自扩充的链表
来源:优易学  2011-11-28 21:30:22   【优易学:中国教育考试门户网】   资料下载   IT书店

  package com.tongji.szx.base;

  import com.tongji.szx.baseDao.ListInterface;

  public class ExtendList<T> implements ListInterface<T>{

  private T[] entry;

  private int length;

  private int capacity;

  private static final int BASE_LENGTH=10;

  /**

  * 默认的构造函数

  */

  public ExtendList(){

  this(BASE_LENGTH);

  }

  @SuppressWarnings("unchecked")

  /**

  * 提供一个初始链表长度的构造函数

  */

  public ExtendList(int intLength){

  if(intLength>0){

  this.length=intLength;

  this.capacity=intLength;

  entry=(T[])new Object[intLength];

  }else{

  this.length=BASE_LENGTH;

  this.capacity=BASE_LENGTH;

  entry=(T[])new Object[BASE_LENGTH];

  }

  }

  @Override

  /**

  * 在链表的末尾插入元素

  */

  public boolean add(T anEntry) {

  // TODO Auto-generated method stub

  try{

  if(length==capacity){

  copyEntry();

  }

 entry[length]=anEntry;

  length++;

  return true;

  }catch(Exception e){

  return false;

  }

  }

  @SuppressWarnings("unchecked")

  private void copyEntry(){

  T[] newEntry=entry;

  this.capacity*=2;

  entry=(T[])new Object[this.capacity];

  for(int index=0;index<newEntry.length;++index){

  entry[index]=newEntry[index];

  }

  }

  @Override

  public boolean add(int index, T anEntry) {

  // TODO Auto-generated method stub

  try{

  while(index>=capacity){

  copyEntry();

  }

  if(index<length){

  moveEntry(index,anEntry);

  length++;

  return true;

  }else{

  entry[index]=anEntry;

  //length+=(index);

  int sub=index-length+1;

  length+=sub;

  return true;

  }

  }catch(Exception e){

  return false;

  }

  //return false;

  }

  /**

  * 当插入位置在length之前时移动元素

  * @param index

  * @param anEntry

  */

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训