栈是一种数据结构,只能从一端进行存储和访问。常规操作有压入栈和弹出栈。 
特性:先进先出,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. 开始C#之旅

    注释 /// <summary> /// 3.文档注释 /// </summary> private static void Test() { Console.WriteLin ...

  2. 编译inotify报错

    错误如下: configure: error: no acceptable C compiler found in $PATH 这是因为没有找到编译器的原因造成的 解决方法: 安装gcc [root@ ...

  3. js中的对象封装

    用json封装,用构造函数封装,用原型函数进行封装,原型函数最节省内存,将大部分相同的属性或方法放在静态区域中,创建对象时,如果对象属性与默认的不一样,则可以在该对象中覆盖静态区域中的值,不影响其他对 ...

  4. Velocity 模板引擎介绍

    一.变量 1. 变量定义 #set($name =“velocity”) 2. 变量的使用 在模板文件中使用$name 或者${name} 来使用定义的变量.推荐使用${name} 这种格式,因为在模 ...

  5. Unity3D 之UGUI 切换开关(toggle)

    (toggle)开关能够实现通过点击实现开和关. 开关下面有两个游戏元素,一个是背景,一个是文字,背景是开关按钮的背景. 可以通过 Is ON开控制开关的开与关. Group -->分组,能够实 ...

  6. 20151225jquery学习笔记---折叠菜单UI

    折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功能UI.它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了.一. 使用 accordion使用 acco ...

  7. 20151212jquery学习笔记--工具函数

    工具函数是指直接依附于 jQuery 对象,针对 jQuery 对象本身定义的方法,即全局性 的函数.它的作用主要是提供比如字符串.数组.对象等操作方面的遍历. 一.字符串操作 在 jQuery 中, ...

  8. 使用AFNetworking进行图片上传

    转载自:http://blog.csdn.net/a645258072/article/details/51728806 项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种, ...

  9. IOS开发之KVC与KVO简述

    KVC:Key-Value Coding KVO:Key-Value Observing Person.m #import <Foundation/Foundation.h> @inter ...

  10. 不同浏览器下css 透明度的写法

    filter:alpha(opacity=90); /* IE transparent */ -moz-opacity:0.9; /* Moz + FF transparent */ opacity: ...