栈在计算机中是很常见的,栈到底是什么呢?用官方的话说栈(Stack) 类表示后进先出(LIFO)的对象堆栈。通俗的讲栈相当于是一个容器,就我们生活中而言,我们可以在容器中装东西,也可以从中取出我们想要的物品。我们可以形象地画个示意图,如下所示:

假如,我们有几个(编号为1、2、3、4、5、6、7)物品按照如图装入容器中,顺序如图所示,假如我们要取出来,顺序一定是倒着的(即:7、6、5、4、3、2、1),这就是我们所谓的:LIFO(Last In First Out)。在栈中,我们称最先放入的元素称为栈底元素,最后放入的称为栈顶元素。将元素放在栈中称为入栈,取出称为出栈。现在我们想要用数组简单地实现栈结构。

查API可知,在栈中存在5个方法,即:empty()、peek()、pop()、push()、search()。要想实现这几种方法,我们需要分别构造相应的方法,使之达到预期的效果。

package stack01;
import java.util.Arrays;
import java.util.EmptyStackException;
public class StackExer {class ArrayStack{private String[] data=new String[10];//存储数据private int size;//记录个数
//把item压入堆栈顶部public void push(String str) {//判断是否需要扩容if (size>data.length) {data=Arrays.copyOf(data, data.length*2);}data[size++]=str;}//查看堆栈顶部的对象,但不从堆栈中移除它public String peek() {
//判断栈是否为空if (size==0) {throw new EmptyStackException();}return data[size-1]; //获取栈顶元素}//移除堆栈顶部的对象,并作为此函数的值返回该对象public String pop() {String str=this.peek();//获取栈顶元素size--;                //减少元素个数return str;}//测试堆栈是否为空public boolean empty() {return size==0;}//返回对象在堆栈中的位置,以 1 为基数public int research(String str) {//顺着放倒着拿(FILO/LIFO)
for (int i = size-1; i >=0; i--)
{if (str==data[i]||str!=null&&data[i].equals(str)) {return size-i;                   }}return -1;    //返回栈中不存在该元素}}}

用数组实现一个栈结构相关推荐

  1. 数据结构笔记--栈的总结及java数组实现简单栈结构

    杂谈"栈"结构: 栈(Stack)是一种插入删除操作都只能在一个位置上进表,这个位置位于表的末端,叫做栈顶(Top). 对栈的基本操作有push和pop,表示进栈和出栈.也就相当于 ...

  2. 【数据结构与算法】详解什么是栈,并用代码手动实现一个栈结构

    本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...

  3. c语言中栈区运用原理形象图,C语言实现使用动态数组来构造栈结构

    我在面前一篇博客<C语言实现使用静态数组来构造栈结构>中使用了静态数组来模拟栈的操作.静态数组的大小是在代码中写死的.是存储在用户栈上面的,使用起来不灵活.在这篇博客中我会使用动态数组来构 ...

  4. 利用数组实现栈java,用java编写出来:用数组实现一个栈

    public class Stack { private Object[] stack; //这个不需要; //private int top = 0; //初始化栈顶 //这个也不需要; //写一个 ...

  5. java语言数组实现栈的操作_基于自定义的动态数组实现一个栈(Java语言)

    1.什么是栈? (1)只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶. (2)栈是一种后进先出的数据结构 画个图: 2.栈的实现 (1)定义一个栈的接口 接口是类的行为的抽象. 以下行为分别 ...

  6. 如何轻松使用 C 语言实现一个栈?​

    作者 | 写代码的篮球球痴 什么是数据结构? 数据结构是什么?要了解数据结构,我们要先明白数据和结构,数据就是一些int char 这样的变量,这些就是数据,如果你是一个篮球爱好者,那么你的球鞋就是你 ...

  7. 单调栈结构以及算法中实际应用

    一.什么是单调栈 单调栈就是一个栈结构,但是要求栈底到栈顶的元素必须是单调的(递增或者递减).本身没啥屌的,但是用法非常屌. 二.看一个小题 有这样一个数组[3,5,2,4,6,0,1,5],现在要求 ...

  8. python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  9. c++怎么实现数字数组的删除数字_C/C++数据结构:栈结构解析,最简单解析,让你一遍就会...

    上一章节针对于C语言最基本的数据结构链式结构体做了解析,不清楚的可以回顾一下.本章节主要针对于C语言的基础数据结构栈做以解析. 数据结构之栈 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅 ...

最新文章

  1. pandas使用np.where函数计算返回dataframe中指定数据列包含缺失值的行索引列表list
  2. QEMU — VirtIO 的网络实现
  3. 设置tomcat服务为80端口,tomcat虚拟主机,tomcat日志
  4. 在cmd中使用指令来执行jar包
  5. k8s之informer简单理解
  6. JSON合并补丁:JSON-P 1.1概述系列
  7. AVS高清立体视频编码器
  8. win7更改适配器设置没有本地连接解决方法
  9. 【VS开发】【DSP开发】地址对齐
  10. SAP License:SAP系统上线时的相关检查清单
  11. 《Linux指令从入门到精通》——4.4 Linux下的文本编辑指令
  12. Jxl读写Excel文件
  13. 笔记本装服务器系统 无线网卡无法驱动,笔记本Win8.1系统无线网卡驱动装不上如何解决...
  14. CISCO路由器license激活图解教程
  15. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明
  16. 互联网创业公司黑话指南 | 嘿嘿嘿……
  17. 浅析大数据前景及就业方向
  18. 车险杀手锏——高速大数据在车险定价中的应用
  19. windo10系统哪个版本运行最快呢?
  20. 使用Git向Github上传项目(包含大文件>25mb)

热门文章

  1. 岁末精选:2005国外经典语录
  2. 数据结构---线性表课后习题详解(朱昌杰编著)
  3. 2019 ICPC南昌网络赛 E题 Magic Master 【双向队列】
  4. C语言求解一元二次方程组的代码
  5. “世界很美好,值得你为之奋斗”我只同意后半句。
  6. 基于springBoot的港口集装箱码头管理系统
  7. Ubuntu在线安装NFS服务
  8. 威眼(WeaView)企业计算机监管系统如何安装客户端和日常使用
  9. CentOS部署集群版Presto
  10. 什么是 Web 应用防火墙(WAF)?