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(); } }
java 数组实现线性表
最新推荐文章于 2023-02-02 01:11:13 发布