如何使用Java实现顺序表的操作(java,开发技术)

时间:2024-04-28 14:16:39 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

具体内容如下

静态顺序表:使用定长数组存储。
动态顺序表:使用动态开辟的数组存储。

接口

packagecom.github.sqlist;publicinterfaceISequence{//在pos位置插入valbooleanadd(intpos,Objectdata);//查找关键字key找到返回key的下表,没有返回-1intsearch(Objectkey);//查找是否包含关键字key是否在顺序表当中(这个和search有点冲突)booleancontains(Objectkey);//得到pos位置的值ObjectgetPos(intpos);//删除第一次出现的关键字keyObjectremove(Objectkey);//得到顺序表的长度intsize();//打印顺序表voiddisplay();//清空顺序表以防内存泄漏voidclear();}

实现接口里的每个方法

packagecom.github.sqlist;importjava.util.Arrays;/**顺序表*/publicclassMySequenceImplimplementsISequence{privateObject[]elem;//有效数据个数privateintusedSize;privatestaticfinalintDEFAULT_SIZE=10;publicSqList(){this.elem=newObject[DEFAULT_SIZE];this.usedSize=0;}/***判断是否为满*@return满了返回true,否则返回false*/privatebooleanisFull(){returnthis.elem.length==this.usedSize;}/***在pos位置插入val*@parampos*要插入的位置*@paramdata*要插入的值*@return*插入成功返回true,否则返回false*/@Overridepublicbooleanadd(intpos,Objectdata){//1.判断pos位置的合法性if(pos<0||pos>this.elem.length){returnfalse;}//2.判断是否满了,如果满了进行扩容if(isFull()){this.elem=Arrays.copyOf(this.elem,2*this.elem.length);}//3.把pos位置以及之后的数全部向后挪一个位置for(inti=this.usedSize-1;i>=pos;i--){this.elem[i+1]=this.elem[i];}//4.在pos位置插入valthis.elem[pos]=data;//5.更新长度this.usedSize++;returntrue;}/***判断是否为空*@return表为空返回true,否则返回false*/privatebooleanisEmpty(){returnthis.usedSize==0;}/***查找关键字key找到返回key的下表,没有返回-1*@paramkey关键字的值*@return查找成功返回true,失败返回false*/@Overridepublicintsearch(Objectkey){//1.判断是否为空if(isEmpty()){return-1;}//2.遍历查找for(inti=0;i<this.elem.length;i++){//注意:判断条件不能写成:this.elem[i]==keyif(this.elem[i].equals(key)){returni;}}return-1;}/***查找是否包含关键字key是否在顺序表当中(这个和search有点冲突)*@paramkey关键字的值*@return查找成功返回true,失败返回false*/@Overridepublicbooleancontains(Objectkey){//1.判断是否为空if(isEmpty()){returnfalse;}//2.遍历查找for(inti=0;i<this.elem.length;i++){//注意:判断条件不能写成:this.elem[i]==keyif(this.elem[i].equals(key)){returntrue;}}returnfalse;}/***得到pos位置的值*@parampos得到的值的位置*@return成功得到pos位置的值返回true,否则返回false*/@OverridepublicObjectgetPos(intpos){//1.判断位置是否合法if(pos<0||pos>=this.elem.length){returnnull;}//2.位置合法returnthis.elem[pos];}/***删除第一次出现的关键字key*@paramkey关键字*@return*/@OverridepublicObjectremove(Objectkey){//1.先查表看有没有这个关键字//index:关键字下标intindex=search(key);//2.若表里没有这个关键字if(index==-1){returnnull;}//3.表里有这个关键字Objectdata=this.elem[index];inti;//删除第一次出现的关键字key,把key后面的数全部向前挪一个位置for(i=index;i<this.usedSize;i++){elem[i]=elem[i+1];}this.usedSize--;this.elem[i+1]=null;returndata;}/***得到顺序表的长度*@return顺序表的长度*/@Overridepublicintsize(){returnthis.usedSize;}/***打印顺序表*/@Overridepublicvoiddisplay(){for(inti=0;i<this.usedSize;i++){System.out.print(this.elem[i]+"");}System.out.println();}/***清空顺序表以防内存泄漏*/@Overridepublicvoidclear(){for(inti=0;i<this.usedSize;i++){this.elem[i]=null;}}}

测试方法的正确性

packagecom.github.sqlist;publicclassTestDemo1{publicstaticvoidmain(String[]args){MySequenceImplmySequence=newMySequenceImpl();for(inti=0;i<10;i++){mySequence.add(i,i);}System.out.println("在最大值10的范围内插入数据:");mySequence.display();System.out.println();for(inti=10;i<20;i++){mySequence.add(i,i);}System.out.println("扩容:");mySequence.display();System.out.println();System.out.println("随机位置插入数据:");mySequence.add(9,"list");mySequence.display();System.out.println();System.out.println("search查找一个数据:"+mySequence.search("list"));System.out.println("contains查找一个数据:"+mySequence.contains("list"));System.out.println();System.out.println("查找某一个位置对应的值:"+mySequence.getPos(9));System.out.println();System.out.println("删除一个数据:"+mySequence.remove(8));mySequence.display();System.out.println();System.out.println("得到顺序表的长度:"+mySequence.size());}}

测试结果:

如何使用Java实现顺序表的操作

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何使用Java实现顺序表的操作的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:10个提高效率的UNIX和Linux技巧分别是什么下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18