堆栈(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];
}
}

最新文章

  1. Linux面试知识点总结
  2. 【原创】--linux平台下opencv安装
  3. 基于<MediaElement>的WPF视频播放器(带部分特效)【2】
  4. 使用本地phpmyadmin管理远程数据库
  5. 2016年10月11日 星期二 --出埃及记 Exodus 18:22
  6. 基于opencv网络摄像头在ubuntu下的视频获取
  7. 黑马程序员——OC的内存管理学习小结
  8. Ice_cream’s world III--2122
  9. leetcode Combination Sum II python
  10. 使用 Spring 2.5 TestContext 测试DAO层
  11. 本地php 连接 MySQL
  12. Java IO学习笔记五
  13. Jenkins: 执行 PowerShell 命令
  14. Jmeter连接mysql数据库
  15. API设计相关
  16. 正则验证,match()与test()函数的区别?
  17. vue.js之组件篇
  18. shiro源码篇 - 疑问解答与系列总结,你值得拥有
  19. Docker容器数据卷
  20. mysql 查询所有子节点的相关数据

热门文章

  1. javascript_core_04之数组API
  2. SpringBoot常用配置简介
  3. SSIS 对数据排序
  4. 如果正确读取SQL Server中的扩展事件?
  5. QQ左侧滑动显示之按钮切换
  6. NYOJ995硬币找零(简单dp)
  7. UvaOJ10369 - Arctic Network
  8. REST API出错响应的设计
  9. 聚合索引(clustered index) / 非聚合索引(nonclustered index)
  10. layout_weight详解