当前位置: 首页 > news >正文

基本数据结构——栈

  栈的特征是后进先出(last-in, first-out, LIFO)。栈上的插入操作称为压入(PUSH),删除操作称为弹出(POP)。

下面使用一个数组S[n]来实现一个最多容纳n个元素的栈。定义一个属性指向最新插入的元素。栈的操作代码如下:

public class Stack {
    
    private Object[] objs;
    private int pointTop = -1;    //指向最新插入的元素
    
    public Stack() {
    }
    
    public Stack(int n) {    //初始化数组的大小
        objs = new Object[n];
    }
    
    public boolean isEmpty() {
        if(pointTop == -1){
            return true;
        }
        return false;
    }
    
    public boolean isFull() {
        if(pointTop == objs.length-1){
            return true;
        }
        return false;
    }
    
    public boolean push(Object obj) {
        if(!isFull()){
            pointTop += 1;
            objs[pointTop] = obj;
            return true;
        }
        return false;
        
    }
    
    public Object pop() {
        if(isEmpty()){
            return -1;
        }else{
            pointTop = pointTop-1;
            return objs[pointTop+1];
        }
        
    }
    
    public static void main(String[] args) {
        Stack stack = new Stack(10);
        for(int i=0;i<5;i++){
            if(stack.push(i)){
                System.out.println(i);
            }
        }
        System.out.println();
        for(int i=0;i<5;i++){
            System.out.println(stack.pop());
        }
    }
    
}

运行结果:

0
1
2
3
4

4
3
2
1
0

转载于:https://www.cnblogs.com/ming-zi/p/6373040.html

相关文章:

  • JAVA入门[2]-安装Maven
  • 2017《Java技术》预备作业02
  • makefile 判断 64bit or 32 bit
  • Hadoop学习笔记一
  • 转入墙内:SAS HBA crossflashing or flashing to IT mode, Dell Perc H200 and H310
  • 循环引用问题
  • ZooKeeper 在硬盘满后,无法再次启动,抛出Last transaction was partial 解决方法
  • 高性能业务架构解决方案(Keepalive+MySQL)
  • 按钮控件数组实现计算器界面
  • runtime
  • dedecms在后台替换文章标题、内容、摘要、关键字
  • 用户
  • 最小联结词组
  • C# 添加、获取及删除PDF附件
  • HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别
  • JavaScript 如何正确处理 Unicode 编码问题!
  • .pyc 想到的一些问题
  • Angular 响应式表单之下拉框
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Facebook AccountKit 接入的坑点
  • java 多线程基础, 我觉得还是有必要看看的
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Mysql5.6主从复制
  • react-native 安卓真机环境搭建
  • React-生命周期杂记
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于springcloud Gateway中的限流
  • 强力优化Rancher k8s中国区的使用体验
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​​​​​​​​​​​​​​Γ函数
  • #pragma预处理命令
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #考研#计算机文化知识1(局域网及网络互联)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)共用体union的用法举例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)VirtualBox安装增强功能
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .dwp和.webpart的区别
  • .equals()到底是什么意思?
  • .NET NPOI导出Excel详解
  • .NET/C# 使用反射注册事件
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @PreAuthorize注解
  • [<死锁专题>]
  • [20190401]关于semtimedop函数调用.txt
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn