实现顺序表(Java)

创建空的成员变量并用构造函数初始化

class MyArrayList {
    public int[] elem;
    public int usedSize;
    public MyArrayList() {
        this.elem = new int[5];
        this.usedSize = 0;
   }

打印顺序表

 //打印顺序表
    public void display() {
        for(int i = 0;i < this.usedSize;i ++) {
            System.out.print(this.elem[i] + " ");
       }
        System.out.println();
    }

在pos位置新增一个元素

  public void add(int pos,int data) {
        if(pos < 0 || pos > this.usedSize) {
            System.out.println("不合法!");
            return;
        }
        if (this.usedSize == this.elem.length) {
        //扩容
            this.elem =Arrays.copyOf(this.elem,2*this.elem.length);
        }
        for (int i = this.usedSize - 1; i >= pos ; i--) {
            this.elem[i + 1] = this.elem[i];
        }
        this.elem[pos] = data;
        this.usedSize ++;
    }

判定是否包含某个元素

//判定是否包含某个元素
    public boolean contains(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 (this.elem[i] == toFind)  {
                return i;
            }
        }
        return -1;
    }

获取pos位置的元素

  //获取pos位置的元素
    public int getPos(int pos) {
        if(pos < 0 || pos >= this.usedSize) {
            return -1;
        }
       return this.elem[pos] ;
    }

给pos位置设置为value

   //给pos位置设为value
    public void setPos(int pos,int value) {
        if(pos < 0 || pos >= this.usedSize) {
            return;
        }
        this.elem[pos] = value;
    }

删除某个元素

    //删除第一次出现的关键字key
    //找到是否有toremmve
    //将后面的元素赋值给前面
    public void remove (int toRemove) {
        int j = search(toRemove);
        if(j == -1) {
            System.out.println("没有该数字");
            return;
        }
        for (int i = j ;i < this.usedSize - 1;i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usedSize--;
    }

获取顺序表长度

    //获取顺序表长度
    public int size() {
        return this.usedSize;
    }

清空顺序表

    //清空顺序表
    public void clear() {
        this.usedSize = 0;
    }

调用方法

public class Test {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        //新增
        myArrayList.add(0,1);
        myArrayList.add(1,2);
        myArrayList.add(2,3);
        myArrayList.add(3,4);
        myArrayList.add(4,5);
        myArrayList.add(5,6);
        myArrayList.display();
        //判断是否包含某个元素
        System.out.println(myArrayList.contains(3));
        //查找某个元素对应的位置
        System.out.println(myArrayList.search(3));
        //获取pos的位置
        System.out.println(myArrayList.getPos(3));
        //给pos位置设置值
        myArrayList.setPos(3,5);
        myArrayList.display();
        //删除某个元素
        myArrayList.remove(3);
        myArrayList.display();
        //获取顺序表长度
        System.out.println(myArrayList.size());
        //清空顺序表
        myArrayList.clear();
        myArrayList.display();
    }
}

完整代码

class MyArrayList {
    public int[] elem;
    public int usedSize;
    public MyArrayList() {
        this.elem = new int[5];
        this.usedSize = 0;
   }
   //打印顺序表
    public void display() {
        for(int i = 0;i < this.usedSize;i ++) {
            System.out.print(this.elem[i] + " ");
       }
        System.out.println();
    }
    //在pos位置新增一个元素
    public void add(int pos,int data) {
        if(pos < 0 || pos > this.usedSize) {
            System.out.println("不合法!");
            return;
        }
        if (this.usedSize == this.elem.length) {
            //扩容
            this.elem =Arrays.copyOf(this.elem,2*this.elem.length);
        }
        for (int i = this.usedSize - 1; i >= pos ; i--) {
            this.elem[i + 1] = this.elem[i];
        }
        this.elem[pos] = data;
        this.usedSize ++;
    }
    //判定是否包含某个元素
    public boolean contains(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 (this.elem[i] == toFind)  {
                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) {
            return;
        }
        this.elem[pos] = value;
    }
    //删除第一次出现的关键字key
    //找到是否有toremmve
    //将后面的元素赋值给前面
    public void remove (int toRemove) {
        int j = search(toRemove);
        if(j == -1) {
            System.out.println("没有该数字");
            return;
        }
        for (int i = j ;i < this.usedSize - 1;i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usedSize--;
    }
    //获取顺序表长度
    public int size() {
        return this.usedSize;
    }
    //清空顺序表
    public void clear() {
        this.usedSize = 0;
    }
}

public class Test {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        //新增
        myArrayList.add(0,1);
        myArrayList.add(1,2);
        myArrayList.add(2,3);
        myArrayList.add(3,4);
        myArrayList.add(4,5);
        myArrayList.add(5,6);
        myArrayList.display();
        //判断是否包含某个元素
        System.out.println(myArrayList.contains(3));
        //查找某个元素对应的位置
        System.out.println(myArrayList.search(3));
        //获取pos的位置
        System.out.println(myArrayList.getPos(3));
        //给pos位置设置值
        myArrayList.setPos(3,5);
        myArrayList.display();
        //删除某个元素
        myArrayList.remove(3);
        myArrayList.display();
        //获取顺序表长度
        System.out.println(myArrayList.size());
        //清空顺序表
        myArrayList.clear();
        myArrayList.display();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值