数组模拟栈思路分析及代码实现

【华为OD机考真题】- 入栈出栈(B卷-100分)(C版) 🔔本文收录于「最新最全华为OD机试真题(C版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅 阅读详情

思路分析

在这里插入图片描述

  1. 使用数组来模拟栈
  2. 定义一个top来表示栈顶,初始化为-1
  3. 入栈的操作,当有数据焦炉到栈时,top++;stack[top]=data;
  4. 出栈的操作,int value=stack[top];top–,return value

代码实现

package com.stack;

import java.util.Scanner;

import javax.management.RuntimeErrorException;

public class ArrayStackDemo {

	public static void main(String[] args) {
		// 测试ArrayStack是否正确
		ArrayStack stack = new ArrayStack(4);
		String key = "";
		boolean loop = true;// 控制是否退出菜单
		Scanner scanner = new Scanner(System.in);// 扫描器

		while (loop) {
			System.out.println("show:显示栈");
			System.out.println("exit:退出程序");
			System.out.println("push:入栈");
			System.out.println("pop:出栈");
			System.out.println("请输入你的选择");
			key = scanner.next();
			switch (key) {
			case "show":
				stack.list();
				break;
			case "push":
				System.out.println("请输入一个数");
				int value = scanner.nextInt();
				stack.push(value);
				break;
			case "pop":
				try {
					int res = stack.pop();
					System.out.printf("出栈的数据是%d\n", res);
				} catch (Exception e) {
					System.out.println(e.getMessage());
				}
				break;
			case "exit":
				scanner.close();
				loop = false;
				break;
			default:
				break;
			}

		}
		System.out.println("程序退出");
	}

}

class ArrayStack {
	private int maxSize;// 栈的大小
	private int[] stack;// 数组,数组模拟栈
	private int top = -1;// top表示栈顶,初始化为-1

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

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

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

	// 进栈push
	public void push(int value) {
		// 判断栈是否满
		if (isFull()) {
			System.out.println("栈满");
			return;
		}
		top++;
		stack[top] = value;
	}

	// 出栈pop
	public int pop() {
		// 判断栈是否为空
		if (isEmpty()) {
			throw new RuntimeException("栈空,没有数据");
		}
		int value = stack[top];
		top--;
		return value;
	}

	// 遍历栈
	public void list() {
		if (isEmpty()) {
			System.out.println("栈空,没有数据");
			return;
		}
		// 从栈顶开始显示数据
		for (int i = top; i >= 0; i--) {
			System.out.printf("stack[%d]=%d\n", i, stack[i]);
		}
	}

}

用数组实现对栈的基本操作 用数组实现对栈的操作,如入栈,退栈,清空,输出等 立即下载

相关推荐

二阶FLL辅助三阶PLL环路的代码解读

今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD

LWN7321的博客 2628

栈的介绍以及使用数组模拟栈的入栈和出栈

栈的介绍以及使用数组模拟栈的入栈和出栈代码过程

周小末天天开心的博客 1208

CAN信号定义避坑指南:Kvaser Database Editor里Byteorder和Bitpos设置的那些‘坑’

本文详细解析了在Kvaser Database Editor中配置CAN信号时,字节序(Byteorder)和起始位(Bitpos)设置的常见错误及解决方案。通过实际案例和验证技巧,帮助工程师避免DBC文件配置中的陷阱,确保车载电子系统的稳定通信。

weixin_28678831的博客 360

数组模拟压栈和弹栈

#include <iostream> #define MAXSIZE 50 using namespace std; bool push(int *stack,int PushX,int &top) {     if(top==MAXSIZE)     {         cout<<"filling";         return false;     } ...

三余丨无梦生 873

山东大学FPGA课程实验一 加法器设计

电子设计自动化与FPGA设计,实验一 加法器设计

2503_91283667的博客 869

什么是无人机巡检?如何实现无人机自动巡检?

复亚智能的无人机自动巡检系统通过高度自动化的技术,实现了无人机的高效巡检作业。无人机自动机场支持无人机的自动起降和电池更换,自动飞行算法确保无人机在复杂环境中的精准飞行和拍摄,而云端识别诊断和AI感知算法平台则实现图像的实时传输和智能分析。复亚智能,作为无人机技术的创新者和推动者,致力于开发先进的无人机自动巡检解决方案,助力各行各业实现智能化、自动化的巡检工作,引领智能巡检的未来。利用人工智能和机器学习算法,无人机可以被训练来识别特定的模式和异常,如结构损坏、热泄漏等,从而提高巡检的准确性和效率。

foiadrone的博客 2842

顺序栈-数组实现

1 #include /*数组顺序栈*/ 2 #include 3 #define TURE 1 4 #define FALSE -1 /**/ 5 #define Stack_Size 50 6 7 typedef int StackDateType; 8 9 struct

qq_38375538的博客 776

从零搭建Simulink-Adams联合仿真平台:实现电机转速的精准闭环控制

本文详细介绍了从零搭建Simulink-Adams联合仿真平台的完整流程,旨在实现电机转速的精准闭环控制。通过将Simulink的控制算法与Adams的物理模型相结合,构建了一个包含真实机械效应的数字孪生系统。文章涵盖了Adams物理模型构建、接口定义、Simulink控制闭环搭建、PID参数调试以及常见避坑指南,为机电系统仿真提供了实用的工程实践指导。

weixin_29189373的博客 152

Java数据结构与算法:数组模拟栈的实现,思路分析,代码实现

文章目录栈1、数组模拟栈的实现1)思路分析2)代码实现 栈 栈是一个先进后出(FILO)的有序列表。 入栈:push 出栈:pop 栈的应用场景: 子程序的调用 处理递归调用 表达式的转换[中缀表达式转后缀表达式]与求值 二叉树的遍历 图形的深度优先(depth—first)搜索法 1、数组模拟栈的实现 1)思路分析 定义一个top变量,用于记录最顶层元素索引 当数组中没有任何元素时,top的值为-1 当添加一个元素时,top++; arr[top]=value,进行添加值 当删除顶部元素时,val

阿星小天地 266

微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器

对于某些用户来说,直接自定义规则可能有难度,所以在这种情况下,我们提供了网页简易模式,网页简易模式下存放了国内一些主流网站爬虫采集规则,在你需要采集相关网站时可以直接调用,节省了制作规则的时间以及精力。微信文章采集下来有很多作用,比如可以将自己行业中最近一个月之内发布的内容采集下来,然后分析文章标题和内容的一个方向与趋势。所以本次介绍八爪鱼简易采集模式下“搜狗公众号”的使用教程以及注意要点。步骤一...

weixin_26712065的博客 3255

使用Python爬虫抓取公共交通网站的时刻表

Python爬虫是一种通过自动化方式从网页中抓取数据的程序。爬虫通过模拟用户请求,获取网站的HTML页面内容,并通过解析这些HTML内容,提取出我们需要的信息。requests:用于向网站发送HTTP请求并获取响应。:用于解析HTML文档,提取数据。Selenium:用于处理动态加载的网页,模拟浏览器操作。pandas:用于数据处理和分析,方便存储和操作抓取到的数据。本文介绍了如何使用Python爬虫抓取公共交通网站的时刻表,并提取其中的关键信息。我们使用了requestsSelenium和。

2201_76125261的博客 1119

栈的思路分析和代码实现

栈的思路分析和代码实现 数组模拟栈的思路分析图 思路分析 使用数组来模拟战 定义一个变量top来表示栈顶,初始化为-1; 入栈操作,当有数据加入到栈时,top++;stack[top]=data; 出栈操作,int value = stack[top];top–;return value1; 代码实现 github ...

孔祥月的博客 240

图神经网络与大模型融合的理论综述:架构、机制与未来方向

然而,它们普遍缺乏对图结构数据的原生支持,无法直接处理边、节点之间的拓扑关系,这限制了其在关系密集型任务中的表现 [23]。2020年发布的BERT [16] 开启了自监督预训练时代,而2021年后,T5 [17]、PaLM [18]、LLaMA [19] 等模型相继推出,参数规模突破千亿级,展现出惊人的上下文学习(In-context Learning)与链式推理(Chain-of-Thought)能力 [20]。例如,将医学影像作为图节点,结合病理报告文本,实现更精准的疾病诊断 [58]。

andeyeluguo的博客 295

【优选算法 | 栈】深入栈模拟题:从题型特征到实现技巧

在算法学习中,栈是最基础也是最容易上手的数据结构之一。然而,当它被用于模拟复杂操作流程时,却常常成为区分“写得出”和“写得好”之间的分水岭。 本文将精选常见的栈模拟题,系统分析它们的思维模式与代码实现,带你掌握这类题目的出题套路与解题技巧。

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 926

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数组模拟栈以及单调栈

数组模拟栈以及单调栈

go back 225

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

栈

栈的一个实际需求 栈的介绍 栈的应用场景

fishermanMr 118

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode 1441. 用栈操作构建数组

给你一个数组target和一个整数n。每次迭代,需要从中依次读取一个数字。请使用下述操作来构建目标数组target"Push"list"Pop"题目数据保证目标数组严格递增,并且只包含1到n之间的数字。请返回构建目标数组所用的操作序列。如果存在多个可行方案,返回任一即可。读取 1 并自动推入数组 -> [1]读取 2 并自动推入数组,然后删除它 -> [1]读取 3 并自动推入数组 -> [1,3]只需要读取前 2 个数字就可以停止。提示 1。

m0_56090828的博客 399

C++_022栈的基本使用

概念:deque(双端队列:是一种双开口的连续空间的数据结构,双开口的含义是:可以在头尾两端进行插入和 删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比 较高。deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底层结构如下图所示:数据都存储在每个buff当中,且有一个中控数组,实际上是一个指针数组(包含了指向每个buff的指针)

weixin_47702917的博客 1217

栈的基本知识及有效的括号习题讲解

栈是一种后进先出(LIFO)的线性表,只允许在一端进行插入或删除操作。栈可以通过动态数组或单链表实现,其中动态数组因其内存连续性和缓存友好性,访问栈顶元素的时间复杂度为O(1)。文章详细介绍了栈的基本功能实现,包括初始化、入栈、出栈、访问栈顶元素、计算栈大小、判断栈是否为空以及栈的销毁。此外,文章还通过“有效的括号”问题展示了栈的应用,通过栈结构判断括号是否匹配。最后,文章提到栈的对称性和其他可能的判断标准,并提及即将到来的期末考试。

2401_87629243的博客 652

【面试经典150 | 栈】逆波兰表达式求值

计算逆波兰表达式表示的算术表达式的结果。

weixin_54383080的博客 706

数据结构——栈和队列(OJ)基础题

通过学习栈和队列来练习下OJ题。

moxuezhendecai的博客 391

函数调用关系——数据结构栈类型题

栈是数据结构当中最为简单易懂又实用的数据结构,凭借着“后入后出"的特点实现许多功能。今天的题目用来模拟函数调用关系,还是有一定难度的,正好能够巩固对堆栈的认识。

weixin_62375328的博客 1053

初始化栈的代码_栈的思路分析和代码实现

数组模拟栈的思路分析使用数组模拟栈用top来表示栈顶,初始化为-1当有数据加入时,top++;stack「top」=data;出栈,value=stack「top」;top--;return value;代码实现import ...

weixin_39958631的博客 167

03 数据结构之 “栈”

3-1 栈简介 一个后进先出的数据结构。 JavaScript 中没有栈,但可以用Array 实现栈的所有功能。 const stack = []; // 入栈 stack.push(1); stack.push(2); // 出栈 const item1 = stack.pop(); const item2 = stack.pop(); 为了方便,可以在vscode中使用调试观察结果即可。 3-2 什么场景下用栈? 需要后进先出的场景。 比如:十进制转二进制、判断字符串的括号是否有效、函数调

wayliu的博客 128

2022.04.19 验证栈序列

题目地址(946. 验证栈序列) https://leetcode-cn.com/problems/validate-stack-sequences/ 题目描述 给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。   示例 1: 输入:pushed = [1,2,3,4,5], popped =

weixin_47267285的博客 119
上一篇: 单链表的增删改查
下一篇: 栈实现计算器—思路分析及代码实现
lu_long
博客等级 码龄8年 11粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值