用java数组实现栈
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步
栈是一种常见的数据结构。如果用一句话来概括栈的特点,估计大部分同学都能脱口而出:后进先出,即先进来的元素保存在栈的最底部,新来的元素则在栈顶堆积,直到栈满为止;而取元素的时候,只能从栈顶取,直到栈空为止。整个过程,与摞书的过程很类似:放书的时候都是摞在最上面,取书的时候也是从最上面开始取。要想取出下面的书,就必须先将上面的书先取走。
原理就讲这么多,本身也比较简单。接下来,照例是咱们的口号:
talk is cheap, show me the code
package leilei.bit.edu.stacktest;/*** @author lei.wang**/public class Stack {//存数据的数组int[] data;//栈的最大长度private int size;//栈顶的位置private int top;public Stack(int size) {this.size = size;data = new int[size];top = -1;}public int getSize() {return size;}public int getTop() {return top;}/*** 判断是否为空栈* @return*/public boolean isEmpty() {return top == -1;}/*** 判断是否为满栈* @return*/public boolean isFull() {return (top+1) == size;}/*** 压栈操作* @param data* @return*/public boolean push(int data) {if(isFull()) {System.out.println("the stack is full!");return false;} else {top++;this.data[top] = data;return true;}}/*** 弹栈操作* @return* @throws Exception*/public int pop() throws Exception {if(isEmpty()) {throw new Exception("the stack is empty!");} else {return this.data[top--];}}/*** 获取栈顶的元素,但不弹栈* @return*/public int peek() {return this.data[getTop()];}public static void main(String[] args) {Stack stack = new Stack(20);stack.push(0);stack.push(1);stack.push(2);stack.push(3);System.out.println("Now the top_num is:" + stack.peek());while(! stack.isEmpty()) {try {System.out.println(stack.pop());} catch (Exception e) {e.printStackTrace();}}}
}
代码运行结果
Now the top_num is:3
3
2
1
0
代码本身比较简单,就不在过多解释,如果还有不懂的地方请看注释;注释还不懂的话,请留言。
用java数组实现栈相关推荐
- 字符串得结果!Java数组模拟栈以实现中缀表达式综合计算器,字符串表达式计算器
文章目录 数组模拟栈类 中缀表达式计算器类(测试类) 数组模拟栈类 主要实现栈的一些基本功能,以及在该场景下的功能. //先创建一个栈 class AStack {private int maxSiz ...
- java 模拟栈底层用数组_java用数组模拟栈
package stack2; public interface StackADT { /** * 添加元素 * @param object */ void push(Object object); ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- java中基于数组的栈实现
在java中利用数组来实现栈以及相关操作. 首先我们要新建一个类,该类中new一个固定大小的数组,来充当我们的栈,来容纳入栈的数据. 在该类中我们可以对栈进行出栈入栈,扩容,和获取栈顶元素等操作.在该 ...
- Java数据结构——数组实现栈
Java数据结构--数组实现栈 public class StackAndQueue {public static void main(String[] args) {Scanner scanner ...
- Java数据结构之栈的数组实现
//数组模拟栈 public class ArrayStack {private int maxStacksize;private int[] stack;private int top = -1;p ...
- Java堆和栈的基本理解
Java 堆和栈的区别 参考背景: 堆内存:用来存放由new创建的对象和数组: 栈内存:存放基本类型的变量,对象的引用变量: 堆存放的原因:由于在堆中创建对象(或数组)后,可在栈中定义一个特殊变量,让 ...
- 六、使用数组模拟栈的思路及代码实现
使用数组模拟栈的实现过程 1.栈的介绍 (1) 栈的英文为(stack) (2) 栈是一个先入后出(FILO-First In Last Out)的有序列表. (3) 栈(stack)是限制线性表中元 ...
- (二十六)、Java数组在内存中如何存放与分配
Java中有两种类型的数组: 基本数据类型数组: 对象数组: 当一个对象使用关键字"new"创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说是一样的,因为数组也是一个 ...
- 【转载】关于Java堆和栈的解释,收藏下来以后学习
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...
最新文章
- COGS-257-动态排名系统-树状数组+主席树
- _Linux软件安装
- Android之解决AppBarLayout 下面一道阴影
- 计算机中级职称报考入口,2020年9月计算机职称考试报名流程(附入口)
- 多选取值_机制砂如何控制MB值和石粉含量
- php中throw try,PHP的Try, throw 和 catch简单用法_PHP教程
- Python 语言程序设计(5-1)函数的定义与使用
- Maven仓库的理解及配置
- java给list排序_java 怎么将List里面数据排序
- 洛谷OJ - P1192 - 台阶问题(递推)
- 用LED驱动框架注册led设备的示例代码
- 【leetcode】Reaching Points
- NX二次开发-UFUN输入对象获得对象所在的部件tag UF_OBJ_ask_owning_part
- UITextField类对象左视图leftView无效--iOS开发
- ayit第十周训练g题
- 医院室内定位导航,便捷、低成本智慧医院室内地图应用解决方案
- 基因结构注释软件PASA安装全纪录
- 用soapUI测试GET/POST接口
- 免疫浸润计算方法是CIBERSORT和ssgsea 画图
- 论文翻译阅读——Facial Emotion RecognitionUsing Deep Learning:Review And Insights
热门文章
- 如何在WP模拟器中启动、暂停、重启应用
- arcengine开发中遇到的错误汇总
- iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用
- UltraEdit 与 正则表达式 [转]
- Elastic search相关
- MySQL 如何删除有外键约束的表数据
- JS开发工具WebStorm使用快捷键
- sql server小知识
- 数据驱动安全:数据安全分析、可视化和仪表盘》一3.6 本章小结
- [CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数