如何用Java实现一个顺序表
本篇内容介绍了“如何用Java实现一个顺序表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
实现一个顺序表接口实现
定义一个MyArrayList类,在类中实现以下函数
publicclassMyArrayList{}
数组的定义
publicint[]elem;//定义一个整形数组publicintusize;//usize表示数组的长度publicMyArrayList(){this.elem=newint[5];}
打印顺序表
for循环打印顺序表的每一位
publicvoiddisplay(){for(inti=0;i<this.usize;i++){System.out.print(this.elem[i]+"");}System.out.println();}
在pos位置新增元素
先定义一个isFull函数判断顺序表是否满了,满了返回true,没满则返回false
publicbooleanisFull(){if(this.usize==this.elem.length){returntrue;}returnfalse;}
将pos位置后的元素后移,顺序表顺序表长度增加一位
publicvoidadd(intpos,intdata){//判断顺序表是否满了if(isFull()){System.out.println("顺序表已满");//扩容this.elem=Arrays.copyOf(this.elem,2*this.usize);}//判断pos的合法性if(pos<0||pos>this.usize){System.out.println("pos位置不合法");return;}//将pos位置后的数字后移for(inti=this.usize-1;i>=pos;i--){this.elem[i+1]=this.elem[i];}this.elem[pos]=data;this.usize++;}
判定是否包含某个元素
publicbooleancontains(intkey){for(inti=0;i<this.usize;i++){if(this.elem[i]==key){returntrue;}}returnfalse;}
查找某个对应元素的位置
返回它的位置
publicintsearch(intkey){for(inti=0;i<this.usize;i++){if(this.elem[i]==key){returni;}}return-1;}
获取pos位置的元素
定义一个isEmpty函数判断顺序表是否为空
publicbooleanisEmpty(){returnthis.usize==0;}
publicintgetPos(intpos){//判断顺序表是否为空if(isEmpty()){return-1;}//判断pos位置是否合法if(pos<0||pos>=this.usize){return-1;}returnthis.elem[pos];}
给pos位置的元素设为value 更新为新的数字
publicvoidsetPos(intpos,intvalue){//判断顺序表是否为空if(isEmpty()){return;}//判断pos位置是否合法if(pos<0||pos>=this.usize){return;}this.elem[pos]=value;}
删除第一次出现的关键字key
查找到关键字,从关键字所在的位置开始到顺序表结束每一项前移,覆盖掉关键字,长度减少一位
publicvoidremove(intkey){intindex=search(key);if(key==-1){System.out.println("关键字不存在");return;}for(inti=key;i<this.usize-1;i++){this.elem[i]=this.elem[i+1];}this.usize--;}
获取顺序表长度
publicintsize(){returnthis.usize;}
清空顺序表
顺序表长度直接为0
publicvoidclear(){this.usize=0;}
实现这个顺序表
定义一个测试类,测试这些函数的输出
publicclassTestDemo{publicstaticvoidmain(String[]args){MyArrayListmyArrayList=newMyArrayList();//给这个顺序表写入1,2,3,4,5myArrayList.add(0,1);myArrayList.add(1,2);myArrayList.add(2,3);myArrayList.add(3,4);myArrayList.add(4,5);//打印这个顺序表myArrayList.display();//判定5这个元素是否在该顺序表中System.out.println(myArrayList.contains(5));//查找5这个元素返回它的位置System.out.println(myArrayList.search(5));//获取3位置的元素System.out.println(myArrayList.getPos(3));//将4位置的元素重新赋值为9myArrayList.setPos(4,9);//打印新的顺序表myArrayList.display();//删除第一次出现的元素4myArrayList.remove(4);//打印新的顺序表myArrayList.display();//获取顺序表的长度System.out.println(myArrayList.size());System.out.println("清空");//清空顺序表myArrayList.clear();//打印新的顺序表myArrayList.display();}}
顺序表的优缺点
优点:顺序表查找方便,知道这个元素的位置就可以直接找到这个元素。
缺点:扩容一般成2倍增长,会有一定的空间浪费。
“如何用Java实现一个顺序表”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。