順序鏈表的實現

public class SeqList{
  final int defaultSize=10;
  int size;
  int maxSize;
  Object listArray[];
   public SeqList(){
	   initiate(defaultSize);
   }
   public SeqList(int size){
	   initiate(size);
   }
   public void initiate(int sz){     //初始化順序鏈表
	   maxSize=sz;
	   size=0;
	   listArray=new Object[sz];
   }
   public  void insert(int i,Object obj) throws Exception{  //在順序鏈表指定位置i插入元素obj
	   if(size==maxSize){
		   throw new Exception("順序表已滿,沒法插入!!");
	   }
	   if(i<0||i>size){
		   throw new Exception("參數錯誤!!");
	   }
	   for(int j = size; j > i; j--){
			listArray[j] = listArray[j-1];
		}
	   listArray[i]=obj;
	   size++;
   }
   public Object delete(int i) throws Exception{      //刪除順序鏈表指定位置i的元素
	  if(i<0||i>size-1){
		  throw new Exception("參數錯誤!!");
	  }
	  if(size==0){
		  throw new Exception("順序表已空沒法刪除!!");
	  }
	  for(int j=i;j<size-1;j++){
		  listArray[j]=listArray[j+1];
	  }
	  
	  size--;
	  return listArray[i];
   }
   public Object getData(int i) throws Exception{     //獲得順序鏈表指定位置i的元素
	   if(i<0||i>size-1){
		   throw new Exception("參數錯誤!!");
	   }
	   return listArray[i];
   }
   public int size(){                                //獲得順序鏈表的容量大小
	   return size;
   }
   public boolean isEmpty(){                        //判斷順序鏈表是否爲空
	   return size==0;
   }
   public void MoreDataDelete(SeqList L,Object x) throws Exception{  //刪除順序鏈表L的所有x元素
	   int i;
	   //int tag=0;
	   for(i=0;i<size;i++){
		   if(x.equals(L.getData(i))){
			   L.delete(i);
			   i--;
			  // tag=1;
		   }
	   }
	   //return tag;
   }
}
相關文章
相關標籤/搜索