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

【数据结构与算法 | 基础篇】数组模拟栈

1. 前言

前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作.

2. 数组模拟栈

(1). 栈接口

public interface stack<E> {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E peek();//判断栈是否为空boolean isEmpty();//判断栈是否已满boolean isFull();
}

(2). 数组模拟栈

public class ArrayStack<E> implements stack<E>, Iterable<E>{//栈顶指针private int top;//数组模拟栈private E[] stack;public ArrayStack(int capacity) {stack = (E[]) new Object[capacity];}@Overridepublic boolean push(E value) {if(isFull()) {return false;}stack[top++] = value;return true;}@Overridepublic E pop() {if(isEmpty()) {return null;}return stack[--top];}@Overridepublic E peek() {if (isEmpty()) {return null;}return stack[top-1];}@Overridepublic boolean isEmpty() {return top < 0;}@Overridepublic boolean isFull() {return top == stack.length;}@Overridepublic Iterator<E> iterator() {return new Iterator<E>() {@Overridepublic boolean hasNext() {return top > 0;}@Overridepublic E next() {return stack[--top];}};}
}

3. 单元测试

public class ArrayStackTest {@Testpublic void test1() {ArrayStack<Integer> stack = new ArrayStack<>(10);stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);stack.push(6);stack.push(7);for (Integer element : stack) {System.out.print(element + " ");}//7 6 5 4 3 2 1}@Testpublic void test2() {ArrayStack<Integer> stack = new ArrayStack<>(10);stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);stack.push(6);stack.push(7);System.out.println(stack.peek());//7System.out.println(stack.pop());//7System.out.println(stack.peek());//6}
}

相关文章:

【数据结构与算法 | 基础篇】数组模拟栈

1. 前言 前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作. 2. 数组模拟栈 (1). 栈接口 public interface stack<E> {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E…...

css卡片横线100%宽度

所需样式: 横线不用border, 用单独一个div, 这样就不会影响父组件的padding <div class"pumpDetailView"><div class"pump_title_name"><span>{{ pumpInfo.pointname }}</span><divclass"point_state":style"…...

回溯大法总结

前言 本篇博客将分两步来进行&#xff0c;首先谈谈我对回溯法的理解&#xff0c;然后通过若干道题来进行讲解&#xff0c;最后总结 对回溯法的理解 回溯法可以看做蛮力法的升级版&#xff0c;它在解决问题时的每一步都尝试所有可能的选项&#xff0c;最终找出所以可行的方案…...

基于Android Studio图书管理,图书借阅系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 书架&#xff1a;搜索书籍&#xff0c;查看书籍&#xff0c;借阅书籍&#xff0c;收藏书籍&#xff0c;借阅书籍必须在一个月之内还书&#xff1b; 我的&#xff1a;可以修改密码&#xff0c;退出登录&#xff…...

SCSS 基本使用详解

一、引言 SCSS 是 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的其中一种语法&#xff0c;是一种预处理器脚本语言&#xff0c;能够扩展 CSS 的功能&#xff0c;使其更加强大和高效。SCSS 保留了 CSS 的原有语法&#xff0c;同时增加了变量、嵌套规则、混…...

10.3.k8s的附加组件-图形化管理工具dashboard

目录 一、dashboard介绍 二、部署安装dashboard组件 1.下载dashboard本地文件 2.修改nodeport的端口范围 3.创建和查看dashboard 4.电脑浏览器访问测试 5.token登录方式登录dashboard 5.1.查看dashboard的token 5.2.继续查看用户token的secrets资源详细信息 5.3.复制…...

深入理解CPU缓存一致性

存储体系结构 速度快的存储硬件成本高、容量小&#xff0c;速度慢的成本低、容量大。为了权衡成本和速度&#xff0c;计算机存储分了很多层次&#xff0c;有寄存器、L1 cache、L2 cache、L3 cache、主存&#xff08;内存&#xff09;和硬盘等。 根据程序的空间局部性和时间局…...

python获取安装路径盘符

文章目录 一、前言二、实现方法一、前言 python写的客户端工具需要安装时,可以给用户一个默认的安装路径,如果直接写死个D、E、F盘什么的,那用户可能没有那个盘符,但是如果直接指定系统盘C盘,又不是那么友好,所以默认指定的安装路径应该尽量满足下面的要求: 盘符存在盘…...

CentOS 7.9安装NVIDIA P40显卡驱动、CUDA和cuDNN

文章目录 1、安装P40显卡驱动1.1 查看机器上有哪些显卡1.2 禁用nouveau1.3 安装依赖1.4 安装驱动 2、安装CUDA2.1 安装2.2 测试是否安装成功 3、安装cuDNN3.1 安装3.2 测试是否安装成功 4、总结 1、安装P40显卡驱动 1.1 查看机器上有哪些显卡 lspci | grep -i vga lspci | gr…...

SpringBoot多数据源启动出现循环依赖问题

在使用SpringBoot的项目中&#xff0c;如果是有使用多数据源&#xff0c;可能会存在启动时数据源循环依赖的报错&#xff0c;是因为使用了多数据源注入&#xff0c;和DataSourceAutoConfiguration数据源自动配置的DataSourceInitializerInvoker互相产生循环依赖导致。 这种错误…...

【一步一步了解Java系列】:何为数组,何为引用类型

看到这句话的时候证明&#xff1a;此刻你我都在努力加油陌生人个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 数组 数组是一推相同数据…...

2024年5月份最新独角数卡使用USDT详细小白教程

直观配套视频教程 2024年5月份最新独角数卡安装及USDT使用详细小白教程 1、创建服务器 Centos或者Ubuntu2、宝塔面板开心版安装寶塔 Linux 面版 8.0.5 開心版 - 2024年1月12日 - 开心专区 - 异次元 - Powered by Discuz!Centos安装命令&#xff08;默认安装是 8.0.1 直接在线升…...

【idea】idea2024最新版本下载_安装_破解

1、下载 下载地址&#xff1a;下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 下载完成&#xff1a; idea破解脚本下载链接&#xff1a;https://pan.baidu.com/s/1L5qq26cRABw8XuEn_CngKQ 提取码&#xff1a;6666 下载完成&#xff1a; 2、安装 1、双击idea的安装包&…...

部署CNI网络组件+k8s多master集群部署+负载均衡

一、环境部署 主机服务 192.168.91.5 K8S集群master01192.168.91.8 K8S集群master02192.168.91.6K8S集群node01192.168.91.7K8S集群node02192.168.91.9 负载均衡nginxkeepalive01&#xff08;master&#xff09;192.168.91.10 负载均衡nginxkeepalive02&#xff08;backup&am…...

一个和蔼可亲的Python库,用Gooey为你的程序添加GUI

大家好&#xff0c;你有没有遇到过这样的情况&#xff1a;你写了一个非常棒的命令行程序&#xff0c;但当你分享给朋友或同事时&#xff0c;他们却因为害怕命令行而不愿意使用&#xff1f;这时候&#xff0c;一个简洁美观的图形用户界面&#xff08;GUI&#xff09;就派上用场了…...

java抽象类,接口,枚举练习题

第一题&#xff1a; 答案&#xff1a; class Animal{//成员变量protected String name;protected int weight;//构造方法public Animal(){this.name"refer";this.weight50;}public Animal(String name,int weight){this.namename;this.weightweight;}//成员方法publ…...

探索Python技巧:零基础学习缩进与逻辑关系

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、理解Python的缩进语法 缩进规则详解 二、缩进在逻辑关系中的应用 逻辑块示例 三、实…...

【设计模式】JAVA Design Patterns——Callback(回调模式)

&#x1f50d;目的 回调是一部分被当为参数来传递给其他代码的可执行代码&#xff0c;接收方的代码可以在一些方便的时候来调用它。 &#x1f50d;解释 真实世界例子 我们需要被通知当执行的任务结束时。我们为调用者传递一个回调方法然后等它调用通知我们。 通俗描述 回调是一…...

Pandas高效数据清洗与转换技巧指南【数据预处理】

三、数据处理 1.合并数据&#xff08;join、merge、concat函数&#xff0c;append函数&#xff09; Concat()函数使用 1.concat操作可以将两个pandas表在垂直方向上进行粘合或者堆叠。 join属性为outer&#xff0c;或默认时&#xff0c;返回列名并集&#xff0c;如&#xff…...

kafka防止消息丢失配置

无消息丢失最佳实践配置&#xff1a; 不要使用 producer.send(msg)&#xff0c;而要使用 producer.send(msg, callback) API。设置 acks all。是 Producer 参数。设置成 all&#xff0c;表明所有副本 Broker 都要接收到消息&#xff0c;g该消息才算是“已提交”。设置 retrie…...

AsrTools终极指南:三步实现免费语音转文本,效率提升300%的完整方案

AsrTools终极指南&#xff1a;三步实现免费语音转文本&#xff0c;效率提升300%的完整方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn yo…...

如何用XHS-Downloader解决内容采集难题?3大维度提升效率90%

如何用XHS-Downloader解决内容采集难题&#xff1f;3大维度提升效率90% 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接…...

TTI-Chicago等机构突破性研究:AI学会了一笔一划创作矢量草图

这项由芝加哥丰田技术研究院&#xff08;TTI-Chicago&#xff09;、芝加哥大学和麻省理工学院联合开展的研究发表于2026年&#xff0c;论文编号为arXiv:2603.19500v1。有兴趣深入了解技术细节的读者可以通过该编号查询完整论文。当我们看到一位画家创作时&#xff0c;他们通常不…...

掌握罗技鼠标宏的5个技术维度:从原理到实战优化

掌握罗技鼠标宏的5个技术维度&#xff1a;从原理到实战优化 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 一、技术原理解析&#xff1a;机械补…...

Axure 9.0 原生组件:绘制折线图

引言在原型设计中&#xff0c;数据可视化是传递核心信息的关键手段&#xff0c;而折线图凭借 “清晰展示数据趋势” 的优势&#xff0c;广泛应用于销售波动、用户增长、指标变化等场景。Axure 9.0 作为主流原型工具&#xff0c;虽未内置现成折线图组件&#xff0c;但通过「形状…...

抖音批量下载终极指南:3分钟掌握高效无水印下载技巧

抖音批量下载终极指南&#xff1a;3分钟掌握高效无水印下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

任天堂Switch大气层系统终极指南:7步完成自定义固件安装与虚拟系统配置

任天堂Switch大气层系统终极指南&#xff1a;7步完成自定义固件安装与虚拟系统配置 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统&#xff08;Atmosphere&#xff09;是任天堂…...

Pixel Aurora Engine实战落地:为像素RPG自动生成NPC对话头像与场景贴图

Pixel Aurora Engine实战落地&#xff1a;为像素RPG自动生成NPC对话头像与场景贴图 1. 像素游戏开发者的新利器 想象一下这样的场景&#xff1a;你正在开发一款像素风格的RPG游戏&#xff0c;需要为上百个NPC设计独特的对话头像&#xff0c;还要制作大量场景贴图。传统方法下…...

突破网盘限制:高效下载的终极解决方案——网盘直链下载助手完全指南

突破网盘限制&#xff1a;高效下载的终极解决方案——网盘直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移…...

在GCP上运行autoresearch

Andrej Karpathy最近开源了autoresearch&#xff0c;这是一个将真实LLM训练环境交给AI代理并让它自主实验的项目。代理修改模型代码&#xff0c;训练恰好5分钟&#xff0c;检查验证损失是否改善&#xff0c;保留或丢弃更改&#xff0c;然后重复。你去睡觉&#xff1b;醒来时会看…...