原理来自百度百科

一、栈的定义

栈是一种只能在一端进行插入和删除操作的特殊线性表;它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来);栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;插入一般称为进栈(PUSH),删除则称为退栈(POP)。

 

二、栈的实现

package com.jalja.org.arith;

public class MyStack<E>{
private Object [] arr;//存储
private int index;//栈元素实际入栈索引
private int maxSize;//栈的最大空间 private MyStack(int maxSize) {
this.arr=new Object[maxSize];
this.index=0;
this.maxSize=maxSize;
}
//入栈
public void push(E e) {
if(isFull()) {
throw new RuntimeException("myStack is full ");
}
arr[index++]=e;
}
//出栈
public E pop() {
if(isNull()) {
throw new RuntimeException("myStack is null ");
}
E e=(E)arr[--index];
return e;
}
//访问栈顶元素
public E peek() {
return (E)arr[index-1];
}
//栈是否为空
public boolean isNull() {
return this.index <= 0;
}
//栈是否满了
public boolean isFull() {
return index>=maxSize;
}
public static void main(String[] args) {
MyStack<String> myStack=new MyStack(3);
myStack.push("A0");
myStack.push("A1");
myStack.push("A2");
System.out.println(myStack.peek());
while(!myStack.isNull()) {
System.out.println(myStack.pop());
}
}
}

最新文章

  1. Python OS模块常用函数说明
  2. (转)JavaScript二:JavaScript语言的基本语法要求
  3. linux终端使用技巧
  4. ASP.NET-FineUI开发实践-7
  5. paip.vs2010 或.net 4.0安装出错解决大法.
  6. Python3基础 list(reversed()) 将一个列表逆转并输出
  7. [译]ASP.NET Core 2.0 依赖注入
  8. 2017年总结的前端文章——一劳永逸的搞定 flex 布局
  9. java策略设计模式
  10. Spark数据倾斜及解决方案
  11. ArcGIS删除数据异常崩溃
  12. centos 7安装java开发环境
  13. Spring @RequestAttribute
  14. LBS推荐系统的设计方法
  15. HDU 2206
  16. 【平台兼容性】jeecg3.7 兼容weblogic 部署改造方案
  17. Java虚拟机工作原理简介
  18. 对SQL语句进行过滤的函数
  19. Oracle的下载、安装和配置
  20. memcached 的 SockIOPool 概念

热门文章

  1. imu标定 imu_tk
  2. JAVA基础 XML生成与解析和String包装类下 .replace方法的使用以及char和字符序列的使用场景
  3. python json.dumps中文乱码
  4. 优化JDBC开发
  5. myBatis逆向工程的使用
  6. Spring集成Kafka-注解,xml配置2种方式实现
  7. nice和renice命令详解
  8. 随手记录-linux-vim使用
  9. js 基础拓展
  10. Scrum Meeting 11.03