数据结构与算法之 数组

数组(Array)是一种线性数据结构,它由一系列元素组成,这些元素在内存中是连续的,可以通过下标(index)来访问。数组可以存储同一类型的元素,也可以通过下标来快速访问数组中的任意元素。

在Java中,数组是一种对象,可以通过new操作符进行创建。数组有两种形式:一维数组和多维数组。

一维数组:一维数组是一种最简单的数组形式,它由一组元素组成,这些元素按照顺序排列,通过一个下标来访问每个元素。例如,下面是一个包含5个整数的一维数组:

这个数组中的元素可以通过下标来访问,例如,要访问第3个元素,可以使用下标2:

int num = arr[2];

多维数组:多维数组是一种由一维数组组成的数据结构,其中每个元素也是一个数组,因此可以通过多个下标来访问数组中的元素。例如,下面是一个包含3行4列的二维数组:

int[][] arr = new int[3][4];

这个数组中的元素可以通过两个下标来访问,例如,要访问第2行第3列的元素,可以使用下标1和2:

int num = arr[1][2];

示例:使用一维数组实现栈

下面是一个使用一维数组实现栈的示例代码:

public class MyStack {
    private int[] arr; // 数组
    private int top; // 栈顶元素的下标

    // 构造方法
    public MyStack(int size) {
        arr = new int[size];
        top = -1;
    }

    // 判断栈是否为空
    public boolean isEmpty() {
        return top == -1;
    }

    // 判断栈是否已满
    public boolean isFull() {
        return top == arr.length - 1;
    }

    // 入栈
    public void push(int num) {
        if (isFull()) {
            throw new RuntimeException("Stack is full!");
        }
        arr[++top] = num;
    }

    // 出栈
    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty!");
        }
        return arr[top--];
    }

    // 返回栈顶元素
    public int peek() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty!");
        }
        return arr[top];
    }
}

这个栈使用了一维数组来存储元素,使用top变量来记录栈顶元素的下标。push()方法用来将元素入栈,pop()方法用来将元素出栈,peek()方法用来返回栈顶元素。由于数组是一种固定大小的数据结构,因此这个栈的大小是固定的。