栈是一种数据结构,只能从一端进行存储和访问。常规操作有压入栈和弹出栈。 
特性:先进先出,LIFO 
以下是用ArrayList为内核实现一个栈的数据结构

import java.util.ArrayList;
import java.util.List;
import java.util.EmptyStackException; public class Statck<E extends Object> {
private List<E> pool = new ArrayList<E>(); public Statck() {
} public void clear() {
pool.clear();
} public boolean isEmpty() {
return pool.isEmpty();
} /**
* 获取栈顶元素
* */
public E getTopObjcet() {
if (isEmpty()) {return null;}
return pool.get(pool.size()-1);
} /**
* 弹出栈操作
* */
public E pop() {
if (isEmpty()) {throw new EmptyStackException();}
return pool.remove(pool.size() - );
} /**
* 压入栈
* */
public void push(E e) {
if (isEmpty()) {throw new EmptyStackException();}
pool.add(e);
} /**
* 获取当前栈大小
* */
public int getStatckSize() {
if (isEmpty()) {throw new EmptyStackException();}
return pool.size();
} }

以链表方式实现一个栈

public class Statck<E extends Object> {
private List<E> pool = new ArrayList<E>(); public Statck() {
} public void clear() {
pool.clear();
} public boolean isEmpty() {
return pool.isEmpty();
} /**
* 获取栈顶元素
* */
public E getTopObjcet() {
if (isEmpty()) {return null;}
return pool.get();
} /**
* 弹出栈操作
* */
public E pop() {
if (isEmpty()) {throw new EmptyStackException();}
return pool.remove(pool.size() - );
} /**
* 压入栈
* */
public void push(E e) {
if (isEmpty()) {throw new EmptyStackException();}
pool.add(e);
} /**
* 获取当前栈大小
* */
public int getStatckSize() {
if (isEmpty()) {throw new EmptyStackException();}
return pool.size();
} }

java实现栈的数据结构的更多相关文章

  1. 《剑指Offer》第20题(Java实现):定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    一.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 二.思路解析 首先定义一个Integer类型的栈,记为stack,此栈用来完成数据 ...

  2. Java虚拟机栈和本地方法栈

    Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java ...

  3. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  4. Java 技术栈

    JAVA是一个面向对象的编程语言,由SUN公司的程序员所开发.它不仅吸收了C++的各种优点,而且还撇弃了C++中难以理解的概念,如多继承.指针等:因此JAVA语言具有功能强大且简单易用两个特征, JA ...

  5. Java全栈工程师知识体系介绍

    Java全栈工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人,也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer. 那么想要成为一名合格的Java全栈工程 ...

  6. 2019 Java 全栈工程师进阶路线图,一定要收藏

    技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面 ...

  7. 2019年java全栈工程师学习大全

    技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点我是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面临 ...

  8. Java虚拟机栈---本地方法栈

    1.Java虚拟机栈(Java Virtual Machine Stacks) 线程私有,它的生命周期与线程相同.描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack ...

  9. java虚拟机栈(关于java虚拟机内存的那些事)

    <深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日16:26:51 目录 文章目录 java虚拟机栈是什么 特点 栈帧 局部变量表 什么时候抛出 `Sta ...

随机推荐

  1. spring中@param和mybatis中@param使用区别

    spring中@param /** * 查询指定用户和企业关联有没有配置角色 * @param businessId memberId * @return */ int selectRoleCount ...

  2. Path类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  3. nginx上搭建HLS流媒体服务器

    http://blog.csdn.net/cjsafty/article/details/7922849 简介:HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTT ...

  4. window环境下 node.js 游戏框架pomelo 安装与启动

    一.软件准备 1.1 下载node.js 1.2 下载python 2.5 < version <3.0 1.3 下载c++编译器(一般控制面板中-->程序和功能上已有,如果没有需要 ...

  5. HTTP协议认识

    一.HTTP协议概念 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议 HTTP是一个应用层协议,由请求和响应 ...

  6. Objective-C 成员变量的访问修饰即成员变量可见性解析

    总体来说Objective-C的访问成员变量可见性和C++基本一样,只是多了个@package. 以下是详细说明: 例子: @interface CTPerson : NSObject { @priv ...

  7. java web环境配置类型问题

    一, cmd查看jdk版本 java -version cmd查看jdk安装路径 java -verbose 二, 如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间. ...

  8. Morgan Stanley telephone interview

    Today is Monday, April 28. I get a telephone call from Morgan Stanley in Shanghai. My examiner is a ...

  9. STL unique使用问题

    string strs[] = {"one","one","two","three","three" ...

  10. 24种设计模式--原型模式【Prototype Pattern】

    今天我们来讲原型模式,这个模式的简单程度是仅次于单例模式和迭代器模式,非常简单,但是要使用好这个模式还有很多注意事项.我们通过一个例子来解释一下什么是原型模式. 现在电子账单越来越流行了,比如你的信用 ...