Java对顺序表的练习
程序员文章站
2022-03-30 23:49:21
顺序表在底层本质上就是一个数组所以对顺序表的操作就是对数组的操作要加强对数组的练习import java.util.Arrays;class Practice{ public static class MyArrayList { private int usedSize; private int[] elem; public MyArrayList(){ this.elem=new int[5]; }...
顺序表在底层本质上就是一个数组
所以对顺序表的操作就是对数组的操作
要加强对数组的练习
import java.util.Arrays;
class Practice{
public static class MyArrayList {
private int usedSize;
private int[] elem;
public MyArrayList(){
this.elem=new int[5];
}
//输入
public void insert(int num){
this.elem[this.usedSize]=num;
this.usedSize++;
}
//打印
public void Show(){
for (int i = 0; i <this.usedSize; i++) {
System.out.print(this.elem[i]+" ");
}
}
//判断满
public boolean isFull(int[] elem){
if(this.usedSize==elem.length){
return true;
}
return false;
}
//扩容
public void enlarge(){
this.elem=Arrays.copyOf(this.elem,2*this.elem.length);
}
//在pos位置插入data
public void add(int pos,int data){
//先判断是否满了
if(isFull(elem)){
//System.out.println("满了!");
enlarge();
}
//判断pos位置是否合法
if (pos>this.usedSize||pos<0){
System.out.println("pos位置不合法");
}
//移动元素
//从后往前循环,保证不越界
for (int i=usedSize-1 ;i>=pos; i--) {
this.elem[i+1]=this.elem[i];
}
this.elem[pos]=data;
this.usedSize++;
}
//是否包含某个元素
public boolean contain(int toFind){
for (int i = 0; i <this.usedSize ; i++) {
if(this.elem[i]==toFind){
return true;
}
}
return false;
}
//查找某个元素对应位置
public int search(int toFind){
for (int i = 0; i <this.usedSize ; i++) {
if(toFind==this.elem[i]){
return i;
}
}
return -1;
}
//获取pos位置的元素
public int getPos(int pos){
if(pos<0||pos>this.usedSize){
return -1;
}
return this.elem[pos];
}
//给pos位置元素设置成value
public void setPos(int pos,int value){
if(pos<0||pos>this.usedSize){
System.out.println("pos输入有误!");
return ;
}
this.elem[pos]=value;
}
//获取顺序表长度
public int Length(){
return this.elem.length;
}
//清空顺序表
public void Clear(){
this.usedSize=0;
}
//删除第一次出现的关键字key=2
public void Delete(int key){
int index=search(key);
if(index==-1){
System.out.println("没找到!");
return;
}
for (int i = index; i <this.usedSize-1 ; i++) {
this.elem[i]=this.elem[i+1];
}
this.usedSize--;
}
}
public static void main(String[] args) {
MyArrayList list=new MyArrayList();
list.insert(1);
list.insert(5);
list.insert(3);
list.insert(2);
list.Show();
//插入
list.add(3,7);
System.out.println("插入后:");
list.Show();
//是否包含
System.out.println();
System.out.print(list.contain(3));
//查找元素位置
System.out.println();
System.out.println("该元素的下标为:"+list.search(4));
//获取pos位置元素
System.out.println(list.getPos(3));
//pos位置设为value
list.setPos(2,9);
list.Show();
//获取长度
System.out.println();
System.out.println("长度为:"+list.Length());
//删除第一次出现key
list.Delete(1);
list.Show();
//清空顺序表
System.out.println();
System.out.println("清空顺序表");
list.Clear();
}
}
本文地址:https://blog.csdn.net/qq_45852612/article/details/111991447
推荐阅读
-
怎样对ACCESS数据库中的表进行分析和优化
-
JAVA实现对BMP图片的读取
-
java中return与finally的执行顺序分析(根据字节码分析)
-
Java 对 Math.round() 四舍五入的改进 (开发中常用这种改进的方式)
-
数据结构与算法(Java)-007-JAVA COLLECTIONS API中的表
-
jdbc对SqlServer以及java数据类型映射表(很有用的)
-
读取注册表键值对的C#代码
-
多对多的查询,三表查询,求mysql语句,该怎么处理
-
利用顺序栈和逆序栈对随机排列的四个字母进行栈操作获得栈操作成功的结果并输出
-
数据结构(一)线性表-线性表的顺序表示 顺序表 C语言实现