欢迎访问宙启技术站
智能推送

使用Java实现栈结构的基本函数

发布时间:2023-06-06 22:06:40

栈是一种基本的数据结构,它是一种先进后出(Last In First Out,LIFO)的结构,即最后一个进栈的元素最先出栈。在Java中,我们可以使用数组或链表来实现栈。

数组实现栈的基本函数包括:入栈、出栈、获取栈顶元素、获取栈大小和判断栈是否为空。

1. 入栈

入栈就是将元素添加到栈顶,使用数组实现可以直接将元素放在数组的末尾,代码如下:

public void push(int x) {
    stack[top++] = x; // 加入栈顶
}

2. 出栈

出栈就是将栈顶的元素弹出,使用数组实现就是取出数组的最后一个元素,代码如下:

public int pop() {
    if (isEmpty()) { // 栈为空,抛出异常
        throw new EmptyStackException();
    }
    return stack[--top]; // 取出栈顶元素
}

3. 获取栈顶元素

获取栈顶元素不对栈进行操作,只需要返回栈顶的元素即可,代码如下:

public int peek() {
    if (isEmpty()) { // 栈为空,抛出异常
        throw new EmptyStackException();
    }
    return stack[top - 1]; // 返回栈顶元素
}

4. 获取栈大小

获取栈大小就是返回栈中元素的数量,代码如下:

public int size() {
    return top;
}

5. 判断栈是否为空

判断栈是否为空就是判断栈中是否有元素,代码如下:

public boolean isEmpty() {
    return top == 0;
}

链表实现栈的基本函数也与数组实现类似,只是需要注意链表的操作。

1. 入栈

入栈操作就是将元素添加到链表的头部,代码如下:

public void push(int x) {
    Node node = new Node(x); // 创建新节点
    if (isEmpty()) { // 链表为空
        head = node;
    } else { // 链表不为空
        node.next = head;
        head = node;
    }
    size++; // 大小加1
}

2. 出栈

出栈操作就是将链表头部的元素弹出,代码如下:

public int pop() {
    if (isEmpty()) { // 栈为空,抛出异常
        throw new EmptyStackException();
    }
    int val = head.val;
    head = head.next;
    size--; // 大小减1
    return val;
}

3. 获取栈顶元素

获取栈顶元素也是获取链表头部的元素,代码如下:

public int peek() {
    if (isEmpty()) { // 栈为空,抛出异常
        throw new EmptyStackException();
    }
    return head.val;
}

4. 获取栈大小

获取栈大小就是返回链表的大小,代码如下:

public int size() {
    return size;
}

5. 判断栈是否为空

判断栈是否为空也是判断链表是否为空,代码如下:

public boolean isEmpty() {
    return size == 0;
}

以上就是使用Java实现栈结构的基本函数。我们可以根据实际需要选择数组或链表来实现栈,对于简单的应用,使用数组实现更加直观简单;对于复杂的应用,使用链表实现更加灵活高效。