Java经典实例:实现一个简单堆栈
2024-10-13 22:17:59
堆栈(Stack)是一种常见的数据结构,符合后进先出(First In Last Out)原则,通常用于实现对象存放顺序的逆序。栈的基本操作有push(添加到堆栈),pop(从堆栈删除),peek(检测栈顶元素且不删除)。
/**
* Created by Frank
*/
public class ToyStack {
/**
* 栈的最大深度
**/
protected int MAX_DEPTH = 10; /**
* 栈的当前深度
*/
protected int depth = 0; /**
* 实际的栈
*/
protected int[] stack = new int[MAX_DEPTH]; /**
* push,向栈中添加一个元素
*
* @param n 待添加的整数
*/
protected void push(int n) {
if (depth == MAX_DEPTH - 1) {
throw new RuntimeException("栈已满,无法再添加元素。");
}
stack[depth++] = n;
} /**
* pop,返回栈顶元素并从栈中删除
*
* @return 栈顶元素
*/
protected int pop() {
if (depth == 0) {
throw new RuntimeException("栈中元素已经被取完,无法再取。");
} // --depth,dept先减去1再赋值给变量dept,这样整个栈的深度就减1了(相当于从栈中删除)。
return stack[--depth];
} /**
* peek,返回栈顶元素但不从栈中删除
*
* @return
*/
protected int peek() {
if (depth == 0) {
throw new RuntimeException("栈中元素已经被取完,无法再取。");
}
return stack[depth - 1];
}
}
最新文章
- Linux面试知识点总结
- 【原创】--linux平台下opencv安装
- 基于<;MediaElement>;的WPF视频播放器(带部分特效)【2】
- 使用本地phpmyadmin管理远程数据库
- 2016年10月11日 星期二 --出埃及记 Exodus 18:22
- 基于opencv网络摄像头在ubuntu下的视频获取
- 黑马程序员——OC的内存管理学习小结
- Ice_cream’s world III--2122
- leetcode Combination Sum II python
- 使用 Spring 2.5 TestContext 测试DAO层
- 本地php 连接 MySQL
- Java IO学习笔记五
- Jenkins: 执行 PowerShell 命令
- Jmeter连接mysql数据库
- API设计相关
- 正则验证,match()与test()函数的区别?
- vue.js之组件篇
- shiro源码篇 - 疑问解答与系列总结,你值得拥有
- Docker容器数据卷
- mysql 查询所有子节点的相关数据