当前位置: 首页 > 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内存马
  • 日媒:日本公明党党首将访华,并携带石破茂亲笔信
  • 央媒聚焦人形机器人:为何发展突然加速?中国制造有何优势?
  • 北理工再通报:开除宫某党籍,免去行政职务,解除聘用关系
  • 北理工:开除宫某党籍,免去行政职务,解除聘用关系
  • 智慧菜场团标试验:标准化的同时还能保留个性化吗?
  • 白兰花香飘京城,上海文化体验项目点亮中华民族共同体之美