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


转载于:https://www.cnblogs.com/oversea201405/p/3766912.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值