顺序表的实现

顺序表的实现

class MyArrayList {
    private int[] elam;
    private int usedSize;
    private final int CAPACITY = 10;

    public MyArrayList(){
        this.elam = new int[CAPACITY];
        this.usedSize = 0;
    }
    //打印顺序表
    public void dispaly(){
        for (int i = 0; i < this.usedSize; i++) {
            System.out.print(elam[i]+" ");
        }
    }
    //判断顺序表是否满
    public boolean isFull(){
        return this.usedSize == this.elam.length;
    }
    //在pos位置新增元素
    public void add(int pos, int data){
        if(pos < 0|| pos > this.usedSize){
            return;
        }
        if(isFull()){
            this.elam = Arrays.copyOf(this.elam,this.elam.length*2);
        }
        //移动pos及之后的元素
        for (int i = this.usedSize-1; i >= pos; i--) {
            elam[i+1] = elam[i];
        }
        elam[pos] = data;
        usedSize++;
    }
    //判定是否包含某个元素
    public boolean contains(int toFind){
        for (int i = 0; i < usedSize; i++) {
            if(elam[i] == toFind){
                return true;
            }
        }
        return false;
    }
    //查找某个元素对应的位置
    public int search(int toFind){
        for (int i = 0; i < usedSize; i++) {
            if(elam[i] == toFind){
                return i;
            }
        }
        return -1;
    }
    //获取pos位置的元素
    public int getPos(int pos){
        if(pos < usedSize){
            return elam[pos];
        }
        else{
            return -1;
        }
    }
    //给pos位置的元素设为value
    public int setpos(int pos,int value){
        if(pos < usedSize){
            elam[pos] = value;
            return elam[pos];
        }
        return -1;
    }

    //删除第一次出现的关键字key
    public void remove(int toRemove){
        int index = search(toRemove);
        if(index == -1) {
            return;
        }
        if(index == usedSize-1) {
            this.usedSize--;
            return;
        }
        for (int i = index; i < usedSize-1; i++) {
            elam[i] = elam[i+1];
        }
        usedSize--;
	//清空顺序表
    public void clear(){
        this.usedSize = 0;
    }
}

顺序表功能测试:

public class TestDamo {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        myArrayList.add(0,4);
        myArrayList.add(1,5);
        myArrayList.dispaly();
        System.out.println();
        System.out.println("========");
        System.out.println(myArrayList.contains(5));
        System.out.println(myArrayList.search(5));
        System.out.println(myArrayList.getPos(1));
        myArrayList.remove(5);
        myArrayList.dispaly();
        myArrayList.clear();
        myArrayList.dispaly();
    }
}

输出结果:

4 5 	//顺序表添加4,5
========
true	//判断顺序表是否包含5
1   	//判断顺序表中第一次出现5的位置
5	//查找1号位置的元素
4 	//删除元素5
====
	//清空顺序表后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值