java 数组实现线性表

public interface ListInterface<T>{
	public boolean add(T newEntry);

	public boolean add(int newPosition, T newEntry);

	public T remove(int givenPosition);

	public void clear();

	public T set(int givenPosition, T newEntry);

	public T get(int givenPosition);

	public boolean contains(T anEntry);

	public int size();

	public boolean isEmpty();

	public boolean isFull();

	public void display();
}



import java.io.Serializable;
public class ExpandableArrayList<T> implements ListInterface<T>, Serializable {
	private T[] entry;
	private int length;
	private static final int InitialCapacity = 5;


	public ExpandableArrayList() {
		this(InitialCapacity);


	}


	public ExpandableArrayList(int initialCapacity) {
		length = 0;
		entry = (T[]) new Object[InitialCapacity];
	}


	public boolean add(T newEntry) {
		if (isArrayFull())
			doubleArray();
		entry[length]=newEntry;
		length++;
		return true;
	}


	public void doubleArray() {
		T[] old = entry;
		int oldsize = old.length;
		entry = (T[]) new Object[2 * oldsize];
		for(int i=0;i<oldsize;i++)
			entry[i]=old[i];
        
	}


	public void moveAdd(int newPosition)
	{
		for(int index=length-1;index>=newPosition;index--)
		    entry[index+1]=entry[index];
	}
	public boolean add(int newPosition, T newEntry) {
		if(newPosition>=0&&newPosition<=length)
		{
			if(isArrayFull())
				doubleArray();
			moveAdd(newPosition);
			entry[newPosition]=newEntry;
			length++;
		    return true;
		} 
		else {
			System.out.println("插入的索引不存在");
			return false;
		}
	}


	public T remove(int givenPosition) {
             T result=null;
             if(givenPosition>=0&&givenPosition<length)
             {
            	 if(!isEmpty())
            	 {
            		 result=entry[givenPosition];
            		 if(givenPosition<length-1)
            		     moveRemove(givenPosition);
            		 length--;        				 
            	 }          	 
             }
            else
            {
            	System.out.println("删除的索引不存在");
            }
             return result;
             
	}
     public void moveRemove(int givenPosition)
     {
    	 for(int index=givenPosition;index<length-1;index++)
    		 entry[index]=entry[index+1];
     }
	public void clear() {
		System.out.println("清空线性表");
		length = 0;
	}


	public T set(int givenPosition, T newEntry) {
         if(givenPosition>=0&&givenPosition<=(length-1))
         {
        	 entry[givenPosition]=newEntry;
        	 return entry[givenPosition];
         }
        	 else {System.out.println("替换的索引不存在");
        		 return null;
        	 }
        	 
	}


	public T get(int givenPosition) {
		T result = null;
		if (givenPosition >= 0 && givenPosition <= (length - 1)) {
			if (!isEmpty())
				result = entry[givenPosition];
		}
		else
			System.out.println("该索引不存在");
		return result;
	}


	public boolean contains(T anEntry) {
		boolean find = false;
		for (int i = 0; !find && i < length; i++) {
			if (anEntry.equals(entry[i]))
			{
				System.out.println("输入的数据存在在线性表");
				find = true;
			}
		}
		return find;
	}


	public int size() {
		return length;
	}


	public boolean isEmpty() {
		boolean isempty=(length==0);
		if(isempty)
		System.out.println(" 线性表为空 ");
		else
			System.out.println(" 线性表不为空 ");
		return isempty;
	}


	public boolean isArrayFull() {
		boolean isfull=(length==entry.length);
		System.out.println(" 线性表满: "+isfull);
		return isfull;
	}


	public boolean isFull() {
		return false;
	}


	public void display() {
		System.out.println("当前数组长度 :  "+length );
		for (int i = 0; i < length; i++)
			System.out.print(entry[i]+" ");
		System.out.println();
	}
  public static void main(String[] argv)
  {
	  ExpandableArrayList<Integer> list=new ExpandableArrayList<Integer>();
	  list.add(1);
	  list.display();
	  list.add(2);
	  list.display();
	  list.add(0,3);
	  list.display();
	  System.out.println("取得  :"+list.get(0));
	  list.add(3,4);
	  list.display();
	  list.add(5,5);
	  list.display();
	  list.remove(2);
	  list.display();
	  list.remove(2);
	  list.display();
	  list.set(3,1);
	  list.add(2,2);
	  list.display();
	  list.isEmpty();
	  list.contains(1);
	  list.clear();
	  list.display();
	  list.size();
	  list.isEmpty();
	  
	  
  }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值