java中的栈(利用数组实现栈)

简介: 这篇文章通过Java代码示例介绍了如何使用数组实现栈操作,包括栈的初始化、入栈、出栈、判断栈满和空以及遍历栈的方法。

java中的栈(利用数组实现栈)

常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275

栈的介绍

  • 1、栈的英文名(Stack)
  • 2、先入后出的有序列表
  • 3、限制元素的插入和删除只能在线性表的同一段进行的特殊线性表。允许插入和删除的一段称为栈顶(top),另外固定的一段为栈底(bottom)
  • 4、最先放入的元素在栈底,最后放入的元素在栈顶。最后放入的元素最先被删除,最先放入的最后被删除。

入栈操作,当有数据加入到栈时,top++;stack[top]=data;
出栈操作,int val=stack[top];top–;return val;

举例

设置top的初始值为-1。如果设置为整数或者0,则默认栈有大小。此处使用数组实现栈,数组中的索引0代表第一个元素,如果默认为0,则默认栈的大小为1(数组的长度为1)。栈的大小是在构造函数初始化动态设置大小。

package com.zheng.demo4;

public class MyStack {
    public static void main(String[] args) {
        Stack1 stack = new Stack1(6);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        System.out.println("遍历栈:");
        stack.list();

        System.out.println("取出栈顶元素");
        System.out.println(stack.pop());
    }
}

//定义栈
class Stack1 {
    private int maxSize;//定义栈的大小
    private int top = -1;//栈顶
    private int[] stack;

    //构造器初始化一个栈
    public Stack1(int maxSize) {
        this.maxSize = maxSize;
        stack = new int[this.maxSize];

    }

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

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

    //入栈
    public void push(int data) {
        //先判断栈是否满
        if (!isFull()) {
            top++;
            stack[top] = data;

        } else {
            System.out.println("栈满");
        }
    }

    //出栈
    public int pop() {
        //先判断栈是否为空
        if (isFull()) {
            //抛出异常
            throw new RuntimeException("栈空");

        }
        int val = stack[top];
        top--;

        return val;
    }

    //遍历栈
    public void list() {
        for (int i = top; i >= 0; i--) {
            System.out.printf("stack[%d]=%d\n", i, stack[i]);


        }
    }


}

在这里插入图片描述
在这里插入图片描述

相关文章
|
1月前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
1月前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
32 10
Java基础(六):数组
|
30天前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
64 12
|
2月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
94 5
|
3月前
|
存储 算法 Java
🧠Java零基础 - Java栈(Stack)详解
【10月更文挑战第17天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
97 2
|
4月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
48 4
|
4月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
61 2
|
4月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
129 2
|
4月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
74 9
|
4月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
45 3