首页 > 编程语言 >23-咸鱼学Java-Java中的栈

23-咸鱼学Java-Java中的栈

时间:2022-12-14 15:03:36浏览次数:51  
标签:return 23 int top 栈顶 elem 咸鱼 Java public


栈的图示

23-咸鱼学Java-Java中的栈_System


代码

/**
* 栈
* @author 焦焱
*
*/
public class Stack {
/**
* 栈顶标记
*/
int top;
/**
* 栈内元素
*/
int[] elem;
/**
* 无参构造
*/
public Stack()
{
this(10);
}
/**
* 有参构造
* @param size
*/
public Stack(int size) {
this.top = 0;
this.elem = new int[size];
}

/**
* 入栈
* @param val
* @return
*/
public boolean push(int val)
{ //先判断是否满
if(isFull()){
return false;
}
//如果不为空,赋值,并且栈顶往上走一位
this.elem[this.top++] = val;
return true;
}
/**
* 出栈
* @return
*/
public int pop() {
//先判断是否为空
if(isEmpty()){
System.out.println("当前栈为空");
return -1;
}
//返回当前栈顶减一位置的的元素,并且栈顶往下减一。
return elem[--top];
}
/**
* 获得栈顶元素
* @return
*/
public int getTop()
{ //如果为空返回-1,如果
return isEmpty()?-1:elem[this.top-1];
}
/**
* 判断是否满
* @return
*/
public boolean isFull()
{
return top==this.elem.length;
}
/**
* 判断是否空
* @return
*/
public boolean isEmpty()
{
return top==0;
}
/**
* 显示当前栈内所有元素
*/
public void show()
{
System.out.println("\t栈顶------->栈底");
System.out.print("当前栈数据为:");
for (int i = top-1; i >=0; i--) {
System.out.print(elem[i]+" ");
}
System.out.println();
}
}

测试

public static void main(String[] args) {
Stack t = new Stack();
int stackLength = 5;
for (int i = 0; i < stackLength; i++) {
t.push(i);
}
t.show();
for (int i = 0; i < stackLength; i++) {
System.out.println(t.pop()+" ");
}
}

结果
​​​栈顶------->栈底
当前栈数据为:4 3 2 1 0
4
3
2
1
0


标签:return,23,int,top,栈顶,elem,咸鱼,Java,public
From: https://blog.51cto.com/u_12938555/5936990

相关文章

  • LeetCode-Java-893. Groups of Special-Equivalent Strings
    题目YouaregivenanarrayAofstrings.TwostringsSandTarespecial-equivalentifafteranynumberofmoves,S==T.Amoveconsistsofchoosingtwoindices......
  • LeetCode-Java-575. Distribute Candies
    题目Givenanintegerarraywithevenlength,wheredifferentnumbersinthisarrayrepresentdifferentkindsofcandies.Eachnumbermeansonecandyofthecorr......
  • 能让Java开发者提高效率的10个工具
    ​ Java受到全球百万计开发者的追捧,已经演变为一门出色的编程语言。最终,这门语言随着技术的变化,不断的被改善以迎合变化的市场需求。无论你是否拥有一家科技公司,软件已经......
  • 剑指Offer-Java-重建二叉树
    题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍......
  • 剑指Offer-Java-序列化二叉树
    题目请实现两个函数,分别用来序列化和反序列化二叉树代码此题的核心点是如何表示二叉树,并且解释。/*publicclassTreeNode{intval=0;TreeNodeleft=null;......
  • Java做UI自动化和app自动化中动态代理@FindBy的工作原理【杭州多测师_王sir】【杭州多
    Java做UI自动化和app自动化中动态代理@FindBy的工作原理一、背景简介由于Selenium框架采用PageObject设计模式让测试代码与被测页面对象代码分离,因而提供了不少很方便的注......
  • 【都 Java19 了,还不了解 Java 8 ? 】一文带你深入了解 Java 8 新特性
    Java8(又称为jdk1.8)是Java语言开发的一个主要版本。Oracle公司于2014年3月18日发布Java8,它支持函数式编程,新的JavaScript引擎,新的日期API,新的Stream......
  • JAVA-枚举使用
    枚举在本教程中,我们将了解什么是Java枚举、它们解决的问题以及它们的一些设计模式如何在实践中使用。1.概述Java5首先引入了enum关键字。它表示一种特殊类型的类,它总......
  • 巨蟒python全栈开发数据库前端5:JavaScript1
     1.js介绍&变量&基础数据类型2.类型查询&运算符&if判断&for循环3.while循环&三元运算符4.函数5.今日总结 1.js介绍&变量&基础数据类型js介绍(1)什么是JavaScript&一些历史......
  • Java8新特性
    一、Java8新特性1.Lambda表达式Lambda是匿名函数,使用它可以写出简洁,灵活的代码。  a.表达式无参数,无返回值,只有一个Lambda体Runnable r1=()->log.info......