线性表实现(JAVA)

package NodeList;

public class ListStructs {

	final int MAXSIZE = 20; //存储空间分配量
	Object data[]; //数组存储的数据元素,最大值为MAXSIZE
	static int length; //顺序表长度
	
	/**
	 * 初始化线性表
	 * @return 线性表长度
	 */
	public void InitList()
	{
		data = new Object[MAXSIZE];
		length = 0;
	}
	
	/**
	 * 判断线性表是否为空
	 * @return 0为空,1为非空
	 */
	public int ListEmpty()
	{
		if(length != 0){
			return 1;
		}
		return 0;
	}
	
	/**
	 * 把数组中的数据清空
	 * @return 0为清空
	 */
	public int ClearList()
	{
		int size = length;
		while(size!=0){
			data[size-1] = null;
			size--;
		}
		return 0;
	}
	
	/**
	 * 将线性表中第i个位置元素值返回
	 * @param i 第i个位置
	 * @return e 第i个位置元素的值
	 */
	public Object GetElem(int i)
	{
		Object e = data[i-1];
		return e;
	}
	
	/**
	 * 在线性表中查找与给定值e相等的元素
	 * @param e 给定值
	 * @return 如果查找成功则返回对应的序号,0代表失败
	 */
	public int LocateElem(Object e)
	{
		for(int i=0; i<data.length-1; i++)
		{
			if(e==data[i]){
				return i+1;
			}
		}
		return 0;
	}
	
	/**
	 * 在线性表中第i个位置之前插入新的数据元素e
	 * @param i 位置
	 * @param e 元素
	 * @return 1代表成功,0代表失败
	 */
	public int ListInsert(int i, Object e)
	{
		if(i == MAXSIZE)
		{
			return 0;
		} 
		if(i<1 || i>length+1)
		{
			return 0;
		}
		if(i<=length)
		{
			for(int k=length-1; k>=i-1; k--)
			{
				data[k+1] = data[k];
			}
		}
		data[i-1] = e;
		length++;
		return 1;
	}
	
	/**
	 * 删除线性表中第i个位置的元素,并返回删除的元素
	 * @param i 位置
	 * @return e 删除的元素
	 */
	public Object ListDelete(int i)
	{
		Object e = null;
		if(i == MAXSIZE)
		{
			return 0;
		} 
		if(i<1 || i>length+1)
		{
			return 0;
		}
		if(i<data.length)
		{
			e = data[i-1];
			for (int k=i; k<length; k++)
			{
				data[k-1] = data[k];
			}
		}
		data[length-1] = null;
		length--;
		return e;
	}
	
	/**
	 * 返回线性表中元素的个数
	 * @return
	 */
	public int ListLength()
	{
		return length;
	}
	
	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args)
	{
		ListStructs ls = new ListStructs();
		
		ls.InitList(); //初始化
		
		//填入值
		ls.ListInsert(1, "1");
		ls.ListInsert(2, "2");
		ls.ListInsert(3, "3");
		ls.ListInsert(4, "4");
		ls.ListInsert(5, "5");
		ls.ListInsert(6, "6");
		ls.ListInsert(7, "7");
		ls.ListInsert(8, "8");
		
		if(ls.ListEmpty() == 1){
			System.out.println("线性表不为空:");
		}else{
			System.out.println("线性表为空:");
		}
		
		//打印
		for(int i = 1; i<=length; i++)
		{
			System.out.println(i+":"+ls.GetElem(i));
		}
		
		//删除值
		ls.ListDelete(4);
		
		//打印
		for(int i = 1; i<=length; i++)
		{
			System.out.println(i+":"+ls.GetElem(i));
		}
		
		//查询值为5的元素位置
		System.out.println("值为\"5\"的元素在线性表位置为:"+ls.LocateElem("5"));
		
		//线性表长度
		System.out.println("线性表长度为:"+ls.ListLength());
	}
}

 

你可能感兴趣的:(java,线性表)