1.线性表的顺序表示

来源:互联网 发布:apache ant 1.7.1 编辑:程序博客网 时间:2024/05/29 07:00
package sequenceList;public class SequenceList<T>{final int maxSize = 10;//顺序表中一维数组的初始长度private T[] listArray;//存储元素的数组对象private int length;//保存顺序表当前长度//1.顺序表的初始化//无参构造方法public SequenceList(){length = 0 ;//线性表初始为空listArray = (T[])new Object[maxSize];//不能实例化一个泛型对象,//所以先实例化一个Objicect,再强转成泛型数组}//有参构造方法public SequenceList(int n){if(n<0){System.out.println("error");System.exit(1);}length = 0;listArray = (T[])new Object[maxSize];}//2.顺序表的插入public boolean add(int pos,T obj){if(pos<1||pos>length+1){System.out.println("插入的位置不合法!");return false;}//线性表数组空间已经满,重新分配存储空间if(length == listArray.length){T[] p = (T[]) new Object[length*2];for(int i=0;i<length;i++)p[i] = listArray[i];listArray =p;}//插入元素for(int i=length;i>pos;i--)listArray[i] = listArray[i-1];listArray[pos-1] = obj;length++;return true;}//3.顺序表删除public T remove(int pos){if(isEmpty()){System.out.println("线性表为空");return null;}else if(pos<1||pos>length){System.out.println("索引不合法");return null;}else {for(int i=pos;i<length;i++){listArray[i-1] = listArray[i];}length--;return listArray[pos-1];}}//4.顺序表更新public boolean update(int pos,T obj){if(isEmpty()){System.out.println("线性表为空");return false;}if(pos<1||pos>length){System.out.println("索引不合法");return false;}listArray[pos-1] = obj;return true;}//5.顺序表的查找public int find(T obj){if(isEmpty()){System.out.println("该表为空");return -1;}for(int i=0;i<length;i++){if(listArray[i].equals(obj)) //不要写==,万一是String类型呢return i+1;}return -1;}//6.获取某位置的值public T value(int pos){if(isEmpty()){System.out.println("线性表为空");return null;}if(pos<1||pos>length){System.out.println("索引不合法");return null;}return listArray[pos];}//7.判空public boolean isEmpty(){return length == 0;}//8.求长度public int length(){return length;}//9.正序遍历public void nextOrder(){for(int i=0;i<length;i++)System.out.println(listArray[i]);}//10.销毁public void clear(){length = 0;}}

原创粉丝点击