class="java">package NodeList; public class ListStructs { final int MAXSIZE = 20; //存储空间分配量 Object data[]; //数组存储的数据元素,最大值为MAXSIZE static int length; //顺序表长度 /** * 初始化线性表 * @return 线性表长度 */ public void InitList() { data = new Object[MAXSIZE]; length = 0; } /** * 判断线性表是否为空 * @return 0为空,1为非空 */ public int ListEmpty() { if(length != 0){ return 1; } return 0; } /** * 把数组中的数据清空 * @return 0为清空 */ public int ClearList() { int size = length; while(size!=0){ data[size-1] = null; size--; } return 0; } /** * 将线性表中第i个位置元素值返回 * @param i 第i个位置 * @return e 第i个位置元素的值 */ public Object GetElem(int i) { Object e = data[i-1]; return e; } /** * 在线性表中查找与给定值e相等的元素 * @param e 给定值 * @return 如果查找成功则返回对应的序号,0代表失败 */ public int LocateElem(Object e) { for(int i=0; i<data.length-1; i++) { if(e==data[i]){ return i+1; } } return 0; } /** * 在线性表中第i个位置之前插入新的数据元素e * @param i 位置 * @param e 元素 * @return 1代表成功,0代表失败 */ public int ListInsert(int i, Object e) { if(i == MAXSIZE) { return 0; } if(i<1 || i>length+1) { return 0; } if(i<=length) { for(int k=length-1; k>=i-1; k--) { data[k+1] = data[k]; } } data[i-1] = e; length++; return 1; } /** * 删除线性表中第i个位置的元素,并返回删除的元素 * @param i 位置 * @return e 删除的元素 */ public Object ListDelete(int i) { Object e = null; if(i == MAXSIZE) { return 0; } if(i<1 || i>length+1) { return 0; } if(i<data.length) { e = data[i-1]; for (int k=i; k<length; k++) { data[k-1] = data[k]; } } data[length-1] = null; length--; return e; } /** * 返回线性表中元素的个数 * @return */ public int ListLength() { return length; } /** * 测试 * @param args */ public static void main(String[] args) { ListStructs ls = new ListStructs(); ls.InitList(); //初始化 //填入值 ls.ListInsert(1, "1"); ls.ListInsert(2, "2"); ls.ListInsert(3, "3"); ls.ListInsert(4, "4"); ls.ListInsert(5, "5"); ls.ListInsert(6, "6"); ls.ListInsert(7, "7"); ls.ListInsert(8, "8"); if(ls.ListEmpty() == 1){ System.out.println("线性表不为空:"); }else{ System.out.println("线性表为空:"); } //打印 for(int i = 1; i<=length; i++) { System.out.println(i+":"+ls.GetElem(i)); } //删除值 ls.ListDelete(4); //打印 for(int i = 1; i<=length; i++) { System.out.println(i+":"+ls.GetElem(i)); } //查询值为5的元素位置 System.out.println("值为\"5\"的元素在线性表位置为:"+ls.LocateElem("5")); //线性表长度 System.out.println("线性表长度为:"+ls.ListLength()); } }
?