最简单的数据结构——顺序表,此处以数组为例。
顺序表的优点:支持随机读取,内存空间利用率高。
顺序表的缺点: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) +" "); } } }