顺序表----java实现

最简单的数据结构——顺序表,此处以数组为例。

顺序表的优点:支持随机读取,内存空间利用率高。

顺序表的缺点:1.需要预先给出最大数据元素个数,这往往很难实现。

 2.插入和删除时需要移动大量数据。

SeqList.java

package com.sheepmu;

public class SeqList {
	private int maxSize;
	private int size;
	private Object[] arrayList;
	public SeqList(int sz){
		maxSize=sz;
		size=0;
		arrayList=new Object[sz];
	}
	
	public void insert(int i,Object obj)throws Exception{//顺序表的 插入
		if(size==maxSize)
			throw new Exception("顺序表已满,无法插入!");
		if(i<0||i>size)
			throw new Exception("插入位置不存在!");
		
		//for(int j=i;j<=size;j++) 
		//	arrayList[j+1]=arrayList[j];这不是每个后移了,这是把后面的每个都变成arrayList[j]
		
		for(int j=size;j>i;j--){//这个才能实现真正的后移~!!
			arrayList[j]=arrayList[j-1];
		}	
		 
		arrayList[i]=obj;
 		size++;
	}
	
	public Object delete(int i)throws Exception{//顺序表 删除
		if(size==0)
			throw new Exception("顺序表已为空");
		if(i<0||i>size)
			throw new Exception("删除位置不存在!");
		Object obj=arrayList[i];
		for(int j=i;j<size;j++){
			arrayList[j]=arrayList[j+1];//前移~
		}
		size--;
		return obj;
	}
	
	public Object getData(int i)throws Exception{//取值
		if(i<0||i>size)
			throw new Exception("该位置不存在!");
		return arrayList[i];
	}
	public int getSize(){//大小
		return size;
	}
	public boolean isEmpty(){//是否为空
		return size==0;
	}
}

SeqListTest1.java

package com.sheepmu;
/**
 * 建立一个线性表,依次输入元素0,1,2...9;然后在第4个位置插入9 ,然后删除数据元素7。最后依次显示当前线性表元素。
 * 采用顺序表实现。
 * @author SheepMu
 *
 */
public class SeqListText1 {
	public static void main(String[] args)   throws Exception{
		SeqList seqList=new SeqList(100);
		System.out.println("原始线性表:");
		 for(int i=0;i<10;i++){
				seqList.insert(i, new Integer(i));
				 System.out.print (seqList.getData(i) +"  ");
		 }
	 System.out.println("插入一个元素后:");
			seqList.insert(4, new Integer(9));
			for(int i=0;i<seqList.getSize();i++){
				System.out.print (seqList.getData(i) +"  ");
			}
	 System.out.println("删除一个元素后:");	 
		seqList.delete(7);
		for(int i=0;i<seqList.getSize();i++){
			System.out.print (seqList.getData(i) +"  ");
		}
	} 
}


posted @ 2013-12-29 17:40  IT专业户  阅读(187)  评论(0编辑  收藏  举报