系列文章目录


一、栈(Stack)的介绍

1:栈是一个先入后出的有序列表;
2:栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom);
3:根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。

二、入栈出栈图解

1.入栈

在这里插入图片描述

2.出栈

在这里插入图片描述

三、详细代码

代码如下(java):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

import java.util.Scanner;

/**
 * 数组实现栈
 */
public class ArrayStackDao {
    public static void main(String[] args) {
        //测试
        //实例化一个栈
        ArrayStack arrayStack = new ArrayStack(5);
        //控制循环结束
        Boolean logo = true;
        //控制台输入
        Scanner scanner = new Scanner(System.in);
        //接收用户输入
        String key = "";
        while (logo){
            System.out.println("rz:入栈");
            System.out.println("cz:出栈");
            System.out.println("bl:遍历栈");
            System.out.println("exit:退出程序");
            System.out.println("请输入你的选择:");
            key = scanner.next();

            switch (key){
                case "rz":
                    System.out.println("请输入入栈的数字");
                    int value = scanner.nextInt();
                    arrayStack.pushStack(value);
                    break;
                case "cz":

                    try {
                        arrayStack.popStack();
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                    }
                    break;
                case "bl":
                    arrayStack.getStack();
                    break;
                case "exit":
                    scanner.close();
                    logo = false;
                    break;
            }
        }
        System.out.println("退出程序~~~");
    }
}


/**
 * 创建一个栈
 */
class ArrayStack{
    private int maxSize;   //栈的最大存储量
    private int[] stack;   //数组模拟栈
    private int top = -1;   //栈顶,初始化为-1

    //构造器
    public ArrayStack(int maxSize){
        this.maxSize = maxSize;
        stack = new int[this.maxSize];
    }

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


    //判断栈空
    public Boolean isNull(){
        return top == -1;
    }

    //入栈
    public void pushStack(int value){   //value为入栈的数据
        if (isFull()){
            System.out.println("栈满");
            return;
        }
        top++;
        stack[top] = value;
    }

    //出栈
    public int popStack(){
        if (isNull()){
            throw new RuntimeException("栈为空");
        }
        int value = stack[top];
        top--;
        return value;
    }

    //遍历栈
    public void getStack(){
        if (isNull()){
            System.out.println("栈为空");
        }
        for (int i = top; i >= 0; i--) {
            System.out.printf("stack[%d]=%d\n",i,stack[i]);
        }
    }
    
}
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐