【Java数据结构】线性表
线性表我认为就是数组。。。
创建:
private int[] elements;//元素 private int size;//List中当前的元素个数 public MyArrayList() { this(1);//List默认大小为1 } /** * 按指定大小capacity构造List * * @param capacity List初始化时的大小 */ public MyArrayList(int capacity) { elements = new int[capacity]; size = 0; }
增加:
/** * 添加一个元素到末尾 * * @param item */ public void Add(int item) { int len = elements.length; if (size == len - 1) { resize(2 * len); } /********** Begin *********/ elements[size]=item; size++; /********** End *********/ }
/** * 添加一个元素到指定位置index * * @param index * @param item */ public void Add(int index, int item) { validateRangeForAdd(index); int len = elements.length; if (size == len - 1) { resize(2 * len); } /********** Begin *********/ int x=elements[index]; int xx=size; while(xx>index){ elements[xx]=elements[xx-1]; xx--; } elements[index]=item; size++; /********** End *********/ }
删除:
public int remove(int index) { validateRange(index); /********** Begin *********/ int i=elements[index]; while(index!=size){ elements[index]=elements[index+1]; index++; } size--; return i; /********** End *********/ }
检验数组越界:
/** * 校验索引范围 * * @param index */ private void validateRange(int index) { if (index >= size || index < 0) { throw new ArrayIndexOutOfBoundsException("索引越界了哦!Index: " + index + ", Size: " + size); } } /** * 校验索引范围 * * @param index */ private void validateRangeForAdd(int index) { if (index > size || index < 0) throw new IndexOutOfBoundsException("索引越界了哦!Index: " + index + ", Size: " + size); }
查询:
/** * 返回表中下标为index的元素 * * @param index 下标 * @return */ public int get(int index) { validateRange(index); /********** Begin *********/ return elements[index]; /********** End *********/ }