/* * 初始版本java实现顺序链表 * 未考虑线程安全问题 * * and open the template in the editor. */import java.util.Arrays;/** * * @author wyman */public class SequenceList<T> implements ListI<T> { int size = 0;//实际长度 int init_listSize = 100;//初始长度 public Object[] objs;//用来保存数据 public SequenceList(int n) { this.objs = new Object[n]; this.init_listSize = n; } public SequenceList() { this.objs = new Object[10]; this.init_listSize = 10; } //初始化一个顺序表(对应严蔚敏版数据结构用)over @Override public ListI initList() { return new SequenceList<T>(init_listSize); } //over @Override public void clearList() { this.size = 0; } //over 链表是否为空 @Override public boolean listEmpty() { if (this.size == 0) { return true; } return false; } //返回compare的位序,不存在返回0 @Override public int locateElem(T t) { int index = 0; for (int i = 0; i < this.objs.length; i++) { if (this.objs[i].equals(t)) { index = i+1; } } return index; } // @Override public T getElem(int i) { if (i >= 1 || i <= this.size) { this.size--; return (T) objs[i-1]; } new Exception("查询越界").printStackTrace(); return null; } @Override public T priorElem(T t) { int index = 0; if (this.size <= 0) { return null; } for (int i = 0; i < this.objs.length; i++) { if (this.objs[i].equals(t)) { index = i; } } return (T) this.objs[--index]; } @Override public T nextrElem(T t) { int index = 0; if (this.size <= 0) { return null; } for (int i = 0; i < this.objs.length; i++) { if (this.objs[i].equals(t)) { index = i + 1; } } if (this.size >= index) { return null; } return (T) this.objs[--index]; } @Override public boolean listInsert(int i, T t) { if (i < 1 || i > size + 1) { return false; } if (size == init_listSize) { //空间满了分配新空间1.5倍 init_listSize = size + (size >> 1); Object[] new_Arr = Arrays.copyOf(this.objs, size); this.objs = new_Arr; } Object old_element = this.objs[i - 1]; for (int a = i - 1; a < size; a++) { this.objs[a + 1] = this.objs[a]; } this.objs[i - 1] = t; size++; return true; } @Override public T listDelete(int i) { if (i < 1 || i > size) { return null; } for (int a = i; a < size; a++) { this.objs[a - 1] = this.objs[a]; } size--; return null; } @Override public void listTraverse() { } @Override public int getSize() { return this.size; } @Override public void DestoryList(ListI l) { l=null; }}