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

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

顺序表的缺点: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) +" ");
}
}
}

顺序表----java实现-LMLPHP

05-11 13:38