数据结构之顺序表 -- JAVA实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xnh_565175944/article/details/79945106

顺序表:

       线性表的顺序存储结构是指将线性表的所有数据元素,按逻辑顺序依次存储在一组连续的内存单元中,用这种存储形式存储的线性表称为顺序表。(逻辑顺序与物理存放的顺序相同)

 

顺序表的特点:

(1).逻辑关系相邻的两个数据元素在物理位置上也相邻

(2).顺序表中的的数据元素的数据类型相同,所占用的存储空间也相同

 

顺序表的优点:

       存取速度高效(因为是通过数组,所以可以直接访问下标来存取)

 

顺序表的缺点:

       插入和删除比较缓慢(当插入一个数的时候需要挪动这个位置后面全部的数给这个数腾出位置,删除类似)

       不可以增加顺序表的长度(当顺序表创建成功之后,便不可以对数组的长度进行改变)

 

 

 

建立顺序表

 

接口类 IFList

 

public interface IFList {
	//是否为空
	public boolean isEmpty();
	//返回顺序表长度
	public int getLen();
	//顺序表插入元素
	public void insert(int index,Object obj)throws Exception;
	//顺序表删除元素
	public Object delete(int index)throws Exception;
	//顺序表查找元素的位置
	public int selectIndex(Object []obj)throws Exception;
	//顺序表查找位置的元素
	public Object selectValue(int index)throws Exception;
}

 

 

顺序表类继承IFList

实现各种方法

 

public class MySqList implements IFList {
	//数组长度
	private int lensize;
	//当前长度
	private int len;
	//对象数组
	private Object[] MySqList;
	
	MySqList() {
		// TODO Auto-generated constructor stub
		this(100);
	}
	
	MySqList(int len)
	{
		lensize = len;
		this.len = 0;
		MySqList = new Object[len];
	}
	
	public boolean isEmpty() {
		return len==0;
	}
	
	@Override
	public int getLen() {
		// TODO Auto-generated method stub
		return len;
	}

	@Override
	public void insert(int index,Object obj)throws Exception {
		// TODO Auto-generated method stub
		
		if( index < 0 || index > len ) {
			throw new Exception("index位置不存在");
		}
		for(int i = len;i>=index;i--) {
			MySqList[i+i] = MySqList[i]; 
		}
		MySqList[index] = obj;
		len++;
	}

	@Override
	public Object delete(int index)throws Exception {
		// TODO Auto-generated method stub
		if( index<0 || index>len )
		{
			throw new Exception("无操作对象");
		}
		Object obj = MySqList[index];
		for(int i = index; i<=len;i++)
		{
			MySqList[i] = MySqList[i+1];
		}
		
		return obj;
	}

	public int selectIndex(Object obj)throws Exception {
		// TODO Auto-generated method stub
		for(int i=0;i<len;i++)
		{
			if(obj==MySqList[i]) {
				return i;
			}
		}
		throw new Exception("该顺序表中无此元素");
	}
		
	@Override
	public Object selectValue(int index)throws Exception {
		// TODO Auto-generated method stub
		if(index<0 || index>len) {
			throw new Exception("该位置没有元素");
		}
		
		return MySqList[index];
	}
	
}

 

 

 

 

 

实现代码

 

public class SQList {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			MySqList list = new MySqList(100);
			for(int i = 0;i<50;i++) {
				try {
					list.insert(i, new Integer(i));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			for(int i = 0;i<50;i++) {
				try {
					System.out.print(list.selectValue(i)+" ");
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
	}

}

 

 

 

 

 

 

 

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页