顺序栈———Java实现

Java实现顺序栈操作 Java实现顺序栈操作 首先创建stack,stack的属性有数组,栈顶指针,栈最大容量 public class Stack { int[] arr; int top; //栈顶指针 int maxSize; //栈的最大容量 } 构造方法 //构造方法 public Stack(int size) { this.maxSize = size; this.t... 阅读详情

概念

栈是一种只允许在一端进行插入或删除的线性表(逻辑结构属于操作受限的线性表)。

  • 栈的操作端通常被称为栈顶,另一端被称为栈底。
  • 栈的插入操作称为进栈(压栈|push);栈删除操作称为出栈(弹栈|pop)。

特点

栈中的元素是“先进后出”的特点,只允许在栈顶操作。

存储结构

顺序存储的栈称为顺序栈;链式存储的栈称为链式栈。

Java实现

围绕栈的4个元素来实现栈
- 2个状态:是否栈空;是否栈满。
- 2个操作:压栈push;进栈pop。

顺序栈的实现

顺序栈示意图:

这里写图片描述

顺序栈的Java实现

public class SortStack {

    public Object[] data;   // 数组表示栈内元素
    public int maxSize;     // 栈空间大小
    public int top;         // 栈顶指针(指向栈顶元素)

    /**
     * 初始化栈的长度
     * @param initialSize
     */
    public SortStack(int initialSize){
        if(initialSize>=0){
            this.data=new Object[initialSize];
            this.maxSize=initialSize;
            this.top=-1;
        }
        else{
            System.out.println("栈初始化失败!");
        }
    }

    /**
     * 判断栈是否为空
     * @return
     */
    public boolean isEmpty(){
        return top == -1 ? true : false;
    }

    /**
     * 判断是否栈满
     * @return
     */
    public boolean isFull(){
        return top == maxSize-1 ? true : false;
    }

    /**
     * 入栈操作
     * 先判断是否栈满
     * @param value
     */
    public void push(Object value){
        if(!isFull()){
            System.out.print(value+"入栈   ");
            data[++top]=value;
        }
        else{
            System.out.println("满栈,无法进行入栈操作!");
        }
    }

    /**
     * 出栈操作
     * 先判断是否为空栈
     * @return
     */
    public Object pop(){
        Object num=null;
        if(!isEmpty()){
            num = data[top--];
            return num;
        }
        else{
            return "空栈,无法进行出栈操作!";
        }

    }

    /**
     * 获取栈顶元素
     * @return
     */
    public Object getPeek(){
        if(top>=0){
            return data[top];
        }
        else{
            return "栈顶指针为空,无栈顶元素!";
        }
    }

    /**
     * 打印栈内元素
     */
    public void displayStack(){

        // 栈顶指针不为—1,栈内有元素,进行打印
        if(top>=0){
            for(int i=top;i>=0;i--){
                System.out.print(data[i] + " ");
            }
            System.out.println();
        }
        else{
            System.out.println("栈内元素为空!");
        }       
    }

    /**
     * 获取栈顶指针为n的栈内元素
     * @param n
     * @return
     */
    public Object getPeekN(int n){
        if(n<top){
            return data[n];
        }
        else{
            return "error";
        }
    }

    public static void main(String[] args) {

        SortStack stack=new SortStack(3);
        System.out.println("栈顶元素为:"+stack.getPeek());
        System.out.println("栈是否为空:"+stack.isEmpty());
        System.out.println("是否为满栈:"+stack.isFull());

        System.out.println("++++++++");
        stack.push(1);
        stack.push('A');
        stack.push(5);
        stack.push("hello");

        System.out.println("栈是否为空:"+stack.isEmpty());
        System.out.println("是否为满栈:"+stack.isFull());
        System.out.println("栈顶指针为:"+stack.top);
        System.out.println("==========");

        System.out.println("出栈后的栈顶元素为:"+stack.pop());
        System.out.println("出栈后的栈顶元素为:"+stack.pop());
        System.out.println("+++++++++++");


        System.out.println("栈顶元素为:"+stack.getPeek());
        System.out.println("栈顶指针为2的元素为:"+stack.getPeekN(2));
        System.out.println("栈顶指针为9的元素为:"+stack.getPeekN(9));
        System.out.println("栈是否为空:"+stack.isEmpty());
        System.out.println("是否为满栈:"+stack.isFull());

        System.out.println("**********");
        System.out.print("栈内元素为:");
        stack.displayStack();
        System.out.println("栈顶指针为:"+stack.top);
    }

}

Java代码运行结果如下:

这里写图片描述

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象 在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。 阅读详情

相关推荐

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id =&gt; 1110, resp_id =&gt; 50597, resp_appl_id =&gt; 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4765

Java栈的实现(顺序栈、链式栈)及栈的应用

1. 顺序栈的实现 package lang; import java.io.Serializable; import java.util.Arrays; /** * @ClassName: ArrayStack * @Description: 顺序栈 * @date 2014年1月20日 上午8:47:19 * @param */ public clas

jiutianhe的专栏 1万+

sap外币重估流程图_SAP 外币评估方法(Valuation Method,评估方法)

在FI-GL模块评估外币时(T-code:F.05),需要输入ValuationMethod。下面分解一下评估方法是如何定义的。IMG -> FI -> General LedgerAccounting ->Business Transactions ->Closing ->Valuating -> ForeignCurrency Valuation ->...

weixin_39640543的博客 2355

Java数组实现顺序栈与队列

栈和队列是两种特殊的线性表,他们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制。本文介绍如何使用顺序栈、顺序队列和优先队列以及使用的规则和要领。 技术要点 数组实现顺序栈与队列的技术要点如下: 栈是一种数据结构,限制仅在表的一端进行插入和删除运算的线性表。其数据项的插入和删除(获取)都只能在成为栈顶的一端完成。因为最后插入的数据项就是最先要删除的数据项。当数据项中没有元素时称为空栈。

sunyueqinghit的博客 869

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

ICLR 2025 | MambaPEFT: 探索针对Mamba的参数高效微调方法

通过利用海量数据构建大型模型,基于Transformer的模型生态系统已逐步确立。参数高效微调(PEFT)是一项至关重要的技术,它能以最低成本将这些模型应用于下游任务,同时实现高效的性能表现。最近,基于状态空间模型(SSM)的Mamba模型作为Transformer的潜在替代方案受到了广泛关注。尽管已经提出了许多基于Mamba的大规模模型,但如何高效地将预训练的Mamba模型应用于下游任务仍有待研究。在本文中,作者对适用于Mamba的PEFT方法展开了探索性分析。

小白学视觉 326

【数据结构】堆栈(顺序栈、链栈)的JAVA代码实现

堆栈(stack)是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入和删除操作的一端称为栈顶,最下面的那一端称为栈底。栈顶是动态的,它由一个称为栈顶指针的位置指示器指示。当栈中没有数据元素时,为空栈。堆栈的插入操作称为进栈或入栈,堆栈的删除操作称为出栈或退栈。 栈的主要特点是“后进先出”,即后进栈的元素先被处理。因此,栈又被称为后进先出(last in fir...

Yngz_Miao的博客 1万+

AI测试入门:基于 RAG 的 LLM 应用程序的测试方法「详细介绍」

一个典型的 RAG 架构包括一个检索器(对知识库进行矢量搜索检索上下文的组件)和一个生成器(从检索器中获取检索上下文以构建提示并生成自定义 LLM 响应作为最终输出的组件)。在大多数情况下, 知识库”由存储在向量数据库(如 ChromaDB)中的向量嵌入组成。

blues_C的博客 1869

Java数据结构与算法——栈

Java数据结构与算法——栈

贝尔摩德苦艾酒 9503

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 145

玩转企业微信群机器人:一份超详细的Webhook消息推送指南

企业微信群机器人是一个连接内部协作与外部服务的强大桥梁。通过灵活运用本文介绍的各种消息类型,你可以构建出丰富多彩、信息明确的自动化通知系统,极大地提升团队沟通效率。现在,就动手试试,将你的第一个机器人集成到工作流中吧!如果你有任何有趣的机器人应用场景或遇到了问题,欢迎在评论区留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3973

Java自带的栈和队列(使用巨方便)

栈——“后进先出”原则。

zhoujun798的博客 1056

15、z/OS 优化配置与迁移实践

本文详细探讨了z/OS环境的优化配置与迁移实践,涵盖DASD存储库管理、用户目录更新、环境更新意义以及不同场景下的迁移案例。通过单笔记本系统和服务器级机器的实例,展示了迁移流程和关键要点,包括DASD文件创建、设备映射更新、系统重启初始化以及数据备份等步骤。文章还总结了迁移过程中的注意事项,并展望了未来z/OS优化的发展趋势,为z/OS系统的稳定运行和高效管理提供了实用指导。

zzz56的博客 129

java中自带的顺序栈,栈的Java实现--顺序栈

栈的Java实现--顺序栈栈作为一种数据结构,是一种只能在一端进行插入和caozuo.html" target="_blank">删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。?栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端...

weixin_39735247的博客 431

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

如何实现顺序栈java_java实现顺序栈

栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈为空栈。栈的顺序存储结构为顺序栈。通常把数组中下标为0的一端作为栈底,同时附设指针top指向栈顶元素的位置,栈空时top = -1。以下是java实现顺序栈的代码:package com.dhy.seqstack;/*** 顺序栈* @author Administrator**/publ...

weixin_36477752的博客 555

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java顺序栈_java实现顺序栈

顺序栈类的代码:package sequencestack;public class SequenceStack {private int STACK_INIT_SIZE = 5;//栈的原始大小private int INCREMENT =1;//栈的增量大小private Object []Stack = null;private int base;private int top;privat...

weixin_31548723的博客 151

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java 顺序栈_栈的Java实现--顺序栈

栈的Java实现--顺序栈栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称...

weixin_39687814的博客 370

java实现顺序栈_java实现顺序栈

package com.fcy.dataStruct;import java.util.Arrays;public class SequenceStack {private int DEFAULT_SIZE=10;//保存数组的长度private int capacity;//定义当底层数组容量不够时,程序每次增加的数组长度private int capacityIncrement=0;//定义一...

weixin_42350014的博客 172

java 顺序栈_Java实现顺序栈

一、分析栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。一个标准的顺序栈具有如下基本操作:1、初始化顺序栈2、销毁顺序栈3、清空顺序栈4、检测顺序...

weixin_39756273的博客 573

java实现顺序栈

package stack; public class MyStack { private long arr[]; //定义 数组 private int top; //栈顶指针 /* * 默认构造函数 * 初值长度为10 */ public MyStack(){ arr=new long[10]; top=-1; } /* * 构造函数

funcy的专栏 1435

java 实现顺序栈

文章目录java实现顺序栈代码 java实现顺序栈 底层是数组 代码 /** * 顺序栈,数组实现 * 泛型 */ public class SqStack<T> { // 储存数据的数组 private Object[] array; // 栈里的数据个数 private int size = 0; // 初始化数组 public SqStack(){ array = new Object[10]; // 数组默认长度为

weixin_46085748的博客 387

栈的Java实现--顺序栈

栈的Java实现--顺序栈 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。   栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元

生命在于折腾 1352

Java实现顺序栈

一、分析   栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。   顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。   一个标准的顺序栈具有如下基本操作:     1、初始化顺序栈 ...

weixin_30485379的博客 151

java 顺序栈_4 java顺序栈实现

package com.java.datastructure.stact;//java顺序栈实现public class LinearStact {private int top = -1;private final static int defSize = 2;private String[] data = new String [defSize];//添加元素public boolean ...

weixin_28719225的博客 119

java实现顺序栈_Java实现顺序栈原理解析

这篇文章主要介绍了java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下什么是栈1.栈的英文是stack2.栈是一个先入后出的有序列表3.栈是限制线性表元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端是,为变化的一端,成为栈顶,另外的一端为固定的一端为栈底EVBhnjgy4.栈的定义可知,最先放入...

weixin_30596433的博客 198
上一篇: 无线网卡驱动正常却搜索不到无线信号
下一篇: 链式栈--------Java实现
wilson_m
博客等级 码龄9年 842粉丝 142原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值