java 数据结构与算法---栈
2024-08-30 16:09:08
原理来自百度百科
一、栈的定义
栈是一种只能在一端进行插入和删除操作的特殊线性表;它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来);栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;插入一般称为进栈(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());
}
}
}
最新文章
- Python OS模块常用函数说明
- (转)JavaScript二:JavaScript语言的基本语法要求
- linux终端使用技巧
- ASP.NET-FineUI开发实践-7
- paip.vs2010 或.net 4.0安装出错解决大法.
- Python3基础 list(reversed()) 将一个列表逆转并输出
- [译]ASP.NET Core 2.0 依赖注入
- 2017年总结的前端文章——一劳永逸的搞定 flex 布局
- java策略设计模式
- Spark数据倾斜及解决方案
- ArcGIS删除数据异常崩溃
- centos 7安装java开发环境
- Spring @RequestAttribute
- LBS推荐系统的设计方法
- HDU 2206
- 【平台兼容性】jeecg3.7 兼容weblogic 部署改造方案
- Java虚拟机工作原理简介
- 对SQL语句进行过滤的函数
- Oracle的下载、安装和配置
- memcached 的 SockIOPool 概念