(一)数组对象

数组对象即以对象的形式封装对数组的增,删,改,查的功能。具体见代码,首先封装一个数组对象。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
package cn.liusong.Array;

public class MyArray {
    int[] arr;

    public MyArray() {

        arr = new int[0];
    }

    //数组大小
    public int size() {
        return arr.length;
    }

    //往數組中添加元素
    public void add(int element) {
        int[] newArr = new int[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        newArr[arr.length] = element;
        arr = newArr;
    }

    //刪除指定下标元素
    public void delete(int index) {
        //判断下标是否越界
        if (index < 0 || index > arr.length) {
            System.out.println("输入下标有误");
        }
        int newArr[] = new int[arr.length - 1];
        for (int i = 0; i < newArr.length; i++) {
            //想要删除的下标之前的元素
            if (i < index) {
                newArr[i] = arr[i];
            } else {//想要删除的下标之后的元素
                newArr[i] = arr[i + 1];
            }
        }
        //新数组替换旧数组
        arr = newArr;
    }

    //在任意位置插入元素
    public void insert(int index, int element) {
        if (index<0 || index > arr.length){
            System.out.println("输入下标越界");
        }
        int [] newArr = new int[arr.length+1] ;
        for (int i = 0 ; i<arr.length ; i++ ){
            if (i<index) {
                newArr[i] = arr[i] ;
            }else {
                newArr[i+1] = arr[i] ;
            }
        }
        newArr[index] = element ;
        arr = newArr ;
    }

    //替换指定下标的元素
    public void set(int index, int element) {
        if (index<0 || index > arr.length){
            System.out.println("输入下标越界");
        }
        arr[index] = element ;
    }
    public int get(int index){
        if (index<0 || index > arr.length){
            System.out.println("输入下标越界");
        }
        return arr[index] ;
    }
    //显示数组所有元素
    public void show() {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        System.out.println("******************************");
    }
}

再建一个测试类的对象

package cn.liusong.Array;

public class TestArray {
    public static void main(String[] args) {
        MyArray ma = new MyArray();
        int size = ma.size();
        System.out.println(size);
        ma.add(99);
        ma.add(98);
        ma.show();
        ma.add(97);
        ma.add(96);
        ma.add(95);
        ma.show();
        ma.delete(3);
        ma.show();
        ma.insert(3,33);
        ma.show();
        ma.set(2,22);
        ma.show();
        System.out.println(ma.get(4));

    }
}
0
99
98
******************************
99
98
97
96
95
******************************
99
98
97
95
******************************
99
98
97
33
95
******************************
99
98
22
33
95
******************************
95

Process finished with exit code 0

上面是程序的运行结果。

(二)栈

栈的结构就是用上面数组的结构完成先进后出的功能

package cn.liusong.Array;

public class MyStack {
    int [] arr ;
    public  MyStack(){
        arr = new int[0] ;
    }
    //向栈中压入元素
    public void push(int element){
        int[] newArr = new int[arr.length+1] ;
        for (int i=0;i<arr.length;i++){
            newArr[i] = arr[i] ;
        }
        newArr[arr.length] = element ;
        arr = newArr ;
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        System.out.println("*********************************");
    }
    //从栈中弹出元素
    public int pop() {
        int element;
        if (arr.length == 0) {
            System.out.println("Stack is empty!");
        }
        int[] newArr = new int[arr.length - 1];
        for (int i = 0; i < newArr.length; i++) {
            newArr[i] = arr[i];
        }
        element = arr[arr.length-1];
        arr = newArr ;
        return element ;
    }

    //查看栈顶元素
    public int peek(){
        int element = arr[arr.length-1] ;
        return element ;
    }
    //判断栈是否为空
    public boolean isEmpty(){
        return  arr.length == 0 ;
    }

}

再建立一个测试类

package cn.liusong.Array;

public class TestMyStack {
    public static void main(String[] args){
        MyStack ms = new MyStack();
        ms.push(9);
        ms.push(8);
        ms.push(7);
        ms.push(6);
        ms.push(5);
       // System.out.println( ms.pop());
        System.out.println( ms.peek());
    }
}

结果:

 数据结构(一) 随笔

队列的结构与栈相似,只是它是先进先出的

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄