接口:
package com.ghostwolf.ds.linearitytable.order.interfaces;/***InitList(L)DestroyList(L)ClearList(L)ListEmpty(L)ListLength(L)GetElem(L,i,v)LocateElem(L,e,compare())PriorElem(L,cur_e,&pre_e)NextElem(L,cur_e,&next_e) ListInsert(&L,i,e)ListDelete(&L,i,&e)ListTraverse(L,visit()) union(List &La,List &Lb)*/public interface List{ public void initList(); public void destroyList(); public void clearList(); public boolean listEmpty(); public int listLength(); public Object getElem(int index); public int locateElem(Object search); public Object priorElem(Object current); public Object nextElem(Object current); public boolean listInsert(Object current,int index); public boolean listDelete(int index); public boolean listDelete(Object target); public Object[] listTraverse(int from,int end); public Object[] union(Object[] objectArrayOne,Object[] objectArrayOneTwo,boolean oneFirst);} 实现类:
package com.ghostwolf.ds.linearitytable.order;import com.ghostwolf.ds.linearitytable.order.interfaces.List;public class OrderTableExtendsList implements com.ghostwolf.ds.linearitytable.order.interfaces.List{ private int max=-1; private int current=-1; private Object[] objectArray; public OrderTableExtendsList(){ max = 100; initList(); } public OrderTableExtendsList(int max){ this.max = max; initList(); } public void initList(){ objectArray = new Object[max]; current = 0; } public void destroyList(){ objectArray = null; current = -1; max = -1; } public void clearList(){ objectArray = new Object[max]; current = -1; } public boolean listEmpty(){ if(current<0){ return true; } return false; } public int listLength(){ return current; } public Object getElem(int index){ if(index >current || index <0){ return null; } return objectArray[index]; } public int locateElem(Object search){ for(int i = 0;i<current;i++){ if(search.equals(objectArray[i])){ return i+1; } } return -1; } public Object priorElem(Object currentObject){ for(int i = 0;i<current;i++){ if(currentObject.equals(objectArray[i]) && (i-1) >= 0 ){ return objectArray[i-1]; } } return null; } public Object nextElem(Object currentObject){ for(int i = 0;i<current;i++){ if(currentObject.equals(objectArray[i]) && (i+1) <=current ){ return objectArray[i+1]; } } return null; } public boolean listInsert(Object value,int index){ index = index-1; if(index > current || index <0){ return false; } int j = current+1; while(j>index){ objectArray[j] =objectArray[j-1]; j--; } objectArray[index] = value; current++; return true; } public boolean listDelete(int index){ index = index-1; if(index > current || index <0){ return false; } while(index<current){ objectArray[index] =objectArray[index+1]; index++; } current--; return true; } public boolean listDelete(Object target){ int index = locateElem(target); return listDelete(index); } public Object[] listTraverse(int from,int end){ from = from -1; end = end -1; if(from>end || from <0 || end >current || from>current || end <0){ return null; } Object[] temp = new Object[end - from+1]; int j = 0; for(int i = from;i<=end;i++){ temp[j] = objectArray[i]; j++; } return temp; } public Object[] union(Object[] objectArrayOne,Object[] objectArrayOneTwo,boolean oneFirst){ Object[] temp = new Object[objectArrayOne.length+objectArrayOneTwo.length]; System.out.println("Temp.length"+temp.length+objectArrayOne.length+objectArrayOneTwo.length); if(oneFirst == true){ int j = 0; for(int i = 0;i<temp.length;i++){ if(i>=objectArrayOne.length){ temp[i] = objectArrayOneTwo[j]; j++; }else{ temp[i] = objectArrayOne[i]; } } }else{ int j = 0; for(int i = 0;i<temp.length;i++){ if(i>=objectArrayOneTwo.length){ temp[i] = objectArrayOne[j]; j++; }else{ temp[i] = objectArrayOneTwo[i]; } } } return temp; } public void showAll(){ if(current>1){ System.out.println("开始显示所有"); for(int i=0;i<current;i++){ System.err.println(objectArray[i]); } System.out.println("显示完成"); } } public static void main(String[] args){ OrderTableExtendsList test = new OrderTableExtendsList(); System.out.println("添加从1到10"); for(int i =1;i<=10;i++){ boolean temp = test.listInsert(new Integer(i),i); } System.out.println("长度"+test.listLength()); test.showAll(); System.out.println("是否为空"+test.listEmpty()); System.out.println("删除第2个是否成功"+test.listDelete(2)); System.out.println("长度"+test.listLength()); test.showAll(); System.out.println("在第8个插入99"+test.listInsert(new Integer(99),8)); System.out.println("长度"+test.listLength()); test.showAll(); System.out.println("查找值为99的位置为"+test.locateElem(new Integer(99))); System.out.println("查找值为99的前一个值为"+test.priorElem(new Integer(99))); System.out.println("查找值为99的后一个值为"+test.nextElem(new Integer(99))); System.out.println("删除值为99是否成功"+test.listDelete(new Integer(99))); System.out.println("长度"+test.listLength()); test.showAll(); System.out.println("从3截取到5"); Object[] value = test.listTraverse(3,5); for(int i =0;i<value.length;i++){ System.out.println(value[i]); } System.out.println("从5截取到6"); Object[] valueT = test.listTraverse(5,6); for(int i =0;i<valueT.length;i++){ System.out.println(valueT[i]); } Object[] tempValue = test.union(value,valueT,true); for(int i =0;i<tempValue.length;i++){ System.out.println(tempValue[i]); } }}
