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

Java写数据结构:栈

1.概念:

一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据在栈顶。

2.栈的方法:

 接下来就来一一模拟实现上述栈的方法↓

先把最基本的成员变量和构造方法完成

public class MyStack {public int[] elem;public int usedsize;public MyStack() {this.elem = new int[10];}
}

 实现push方法

 public void push(int val){if(isFull()){this.elem = Arrays.copyOf(elem , elem.length * 2);}elem[usedsize++] = val;}private boolean isFull(){return usedsize == elem.length;}

实现pop方法

先自定义创建一个空栈异常类

public class EmptyStackException extends RuntimeException {public EmptyStackException() {}public EmptyStackException(String message) {super(message);}
}

pop方法 

 public int pop(){if(isEmpty()){throw new EmptyStackException();}int val = elem[usedsize - 1];usedsize--;return val;}
private boolean isEmpty(){return usedsize == 0;}

实现peek方法 

 public int peek(){if(isEmpty()){throw new EmptyStackException();}return elem[usedsize - 1];}private boolean isEmpty(){return usedsize == 0;}

测试:

public class Test {//测试MyStackpublic static void main1(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);myStack.push(5);System.out.println(myStack.peek());System.out.println(myStack.pop());System.out.println(myStack.peek());}
}

结果:

 

相关文章:

  • Nebula图数据库
  • 富诺健康旗下运动营养品牌力爆(LIPOW):以冠军精神定义运动营养新时代
  • 论文分享:【2024 CVPR】Vision-and-Language Navigation via Causal Learning
  • NLTK 基础入门:用 Python 解锁自然语言处理
  • Redis 的单线程模型对微服务意味着什么?需要注意哪些潜在瓶颈?
  • Ansys-FLUENT-笔记1
  • yum如果备份已经安装的软件?
  • OpenCV day7
  • 爬楼梯(每日一题-简单)
  • 《FDTD Solutions仿真全面教程:超构表面与光束操控的前沿探索》
  • 国产AI新突破!全球首款无限时长电影生成模型SkyReels-V2开源:AI视频进入长镜头时代!
  • 搜索二叉树的实现以及一些重点接口的实现思路(包含递归以及非递归版本的实现)
  • 网络原理(TCP协议—协议格式,性质(上),状态)
  • 软件测试入门知识详解
  • 正大策略框架中的博弈识别:短周期结构与程序化辅助判断
  • 数字后端实现教程 | 时钟树综合IMPCCOPT-1304错误Debug思路和解决方案
  • 爱家桌面app官方正版下载 爱家最新版免费安装 固件升级方法
  • 【无人机】无人机方向的设置,PX4飞控方向,QGC中设置飞控的方向/旋转角度。PX4使用手册飞行控制器/传感器方向
  • 为什么RPN生成的候选框,要使用rcnn来进行分类和回归操作?
  • CC注入Tomcat Upgrade/Executor/WebSocket内存马
  • 沈晓萍︱严金清:比斯坦因更早获得敦煌文物的无锡名士
  • 中国证券监督管理委员会党委委员、副主席王建军接受审查调查
  • 南京106亿元成交19宗涉宅地块:建邺区地块楼面单价重回4.5万元
  • 中央网信办部署开展“清朗·整治AI技术滥用”专项行动
  • 中国科学院院士张泽民已任重庆医科大学校长
  • 北京发布今年第四轮拟供商品住宅用地清单,共计5宗22公顷