栈-java代码

import java.util.Arrays;

public class StackDemo {

    private int maxSize;
    private long[] stackArray;
    private int top;

    // 构造器
    public StackDemo(int s){
        // 初始化栈
        maxSize = s;
        stackArray = new long[maxSize];
        top = -1;
    }
    // 入栈
    public void push(long element){

        stackArray[++top] = element;
    }
    // 出栈
    public long pop(){

        long temp = stackArray[top];
        // 还原为默认值
        stackArray[top--] = 0;
        System.out.println(Arrays.toString(stackArray));
        return temp;
    }
    // 弹出栈顶值
    public long pick(){

        return stackArray[top];
    }
    // 判断栈是否已满
    public boolean isFull(){

        return top==maxSize-1;
    }
}

栈,先进后出可以想象成枪的弹夹。

栈有很多用途,比如可以用来“单词逆序”、“字符串匹配”(具体案例可参考数据结构与算法java版)

时间: 2024-10-12 00:50:01

栈-java代码的相关文章

java代码实现栈

1.栈的定义: 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来).栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针.栈是允许在同一端进行插入和删除操作的特殊线性表.允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom):栈底固定,而栈顶浮动:栈中元素个数为零时称为空栈.插入一般称为进栈(PUSH),删除则称为退

栈的顺序存储结构及应用(C、Java代码)

栈的定义: 栈(stack)是限定仅在表尾进行插入和删除的线性表. 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom) ,不包含任何数据元素的栈称为空栈,栈又称为先进后出的线性表,简称LIFO结构. 栈的插入操作:叫做进栈,或压栈.入栈. 栈的删除操作:叫做,出栈,或者弹栈. 栈的结构定义 1 /*栈的结构定义*/ 2 typedef int sElemType; //sElemType类型定义为int 3 typedef struct { 4 5 sElemType

栈的链式存储结构及应用(C、Java代码)

链式存储结构最大的好处就是没有空间的限制,可以通过指针指向将结点像以链的形式把结点链接,我们熟悉的线性表就有链式存储结构. 当然,栈同样有链式存储结构,栈的链式存储结构,简称链栈. 从图片可以看到,和单链表很像,拥有一个头指针top,又称作栈顶指针,所以此时就不再需要单链表里面的头结点了. 对于链栈来说,基本不存在栈满的情况,除非计算机内存已经没有了可使用的空间,如果真的存在,那么计算机系统已经面临着即将死机崩溃的情况,而不是这个链栈是否溢出的问题了. 对于空栈来说,链表的定义是头指针指向NUL

13.1-全栈Java笔记:打飞机游戏实战项目|AWT技术|MyGameFrame

简介和项目目标 通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用. 比如:多线程用来实现动画效果.容器实现对于多发炮弹的存取和处理.常用类等等的应用. 寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上"程序员". 老鸟建议 很多朋友会疑惑:"游戏项目,又不能拿到企业面试中,为什么要讲?" 这是一种太过于功利的想法.就像,我们说:"今天吃个馒头,又不是长高,为什么要吃呢?" 游戏项目的

Java代码编译和执行的整个过程

Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 流程图如下所示: 最后生成的class文件由以下部分组成: 结构信息.包括class文件格式版本号及各部分的数量与大小的信息 元数据.对应于Ja

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

13.3-全栈Java笔记:打飞机游戏实战项目|PaintThread|launchFrame

多线程和内部类实现动画效果 1)增加绘制窗口的线程类 前三个版本,我们步步为营,每个小版本都有功能的突破.但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样"各种动.各种炫".本节我们结合多线程实现动画效果. 我们在MyGameFrame类中定义"重画窗口线程PaintThread类",为了方便使用MyGameFrame类的属性和方法,我们将PaintThread定义成内部类. [示例1]MyGameFrame类:增加PaintThread内部类 pu

4.6-全栈Java笔记:THIS关键字和STATIC关键字

this关键字 对象创建的过程和this的本质 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的.创建一个对象分为如下四步: 1. 分配对象空间,并将对象成员变量初始化为0或空 2. 执行属性值的显示初始化 3. 执行构造方法 4. 返回对象的地址给相关的变量 this的本质就是"创建好的对象的地址"!  由于在构造方法调用前,对象已经创建.因此,在构造方法中也可以使用this代表"当前对

4.1-全栈Java笔记:对象的进化史

面向对象和面向过程的区别 面向过程编程思想思考问题时,我们首先思考"怎么按步骤实现?"并将步骤对应成方法,一步一步,最终完成. 这个适合简单任务,不需要过多协作的情况下.比如,如何开车?我们很容易就列出实现步骤: 1. 发动车 2. 挂挡 3.踩油门 4. 走,你 面向过程适合简单.不需要协作的事务. 如果,我们需要思考"如何造车?",你就会发现列出1234这样的步骤,是不可能的.那是因为,造车太复杂,需要很多协作才能完成. 面向对象(Object)编程,更契合人的