栈的英文为(stack)

  • 栈是一个先入后出(FILO-First In Last Out)的有序列表。
  • 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。
  • 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除

栈的基本操作实现

package com.atguigu.stack;import java.util.Scanner;public class ArrayStackDemo {public static void main(String[] args) {//测试ArrayStack stack =new ArrayStack(4);String key="";boolean loop = true;Scanner scanner = new Scanner(System.in);while(loop) {System.out.println("show:表示显示栈");System.out.println("exit:退出程序");System.out.println("push:表示添加数据到栈(入栈)");System.out.println("pop:表示从栈取出数据(出栈)");System.out.println("请输入你的选择");key = scanner.next();switch(key) {case "show":stack.list();break;case "push":System.out.println("请输入一个数");int value = scanner.nextInt();stack.push(value);break;case "pop":try {int res = stack.pop();System.out.printf("出栈的语句是%d\n", res);}catch(Exception e) {System.out.println(e.getMessage());}break;case "exit":scanner.close();loop = false;break;default:break;}}System.out.println("程序退出");}}class ArrayStack{private int maxSize;private int[] stack;private int top = -1;public ArrayStack(int maxSize) {this.maxSize=maxSize;stack = new int[this.maxSize];}//栈满public boolean isFull() {return top == maxSize -1;}//栈空public boolean isEmpty() {return top == -1;}//出栈public void push(int value) {if(isFull()) {System.out.println("栈满");}top++;stack[top] =value;}//出栈public int pop() {if(isEmpty()) {throw new RuntimeException("栈空");}int value = stack[top];top--;return value;}//遍历栈public void list() {if(isEmpty()) {System.out.println("栈空,没有数据");return;}for(int i = top;i>=0;i--) {System.out.printf("stack[%d]=%d\n",i,stack[i]);}}
}

测试结果

Java实现栈的入栈和出栈等基本操作相关推荐

  1. Java之根据入栈顺序是否能得到出栈顺序

    入栈.出栈顺序匹配 前言 一.Java入栈.出栈 1.例题 二.题解 A.纯正的模拟 B.LinkedHashSet C.利用CPU 总结 参考文献 前言 给出入栈顺序,匹配一个出栈顺序是否合法,即出 ...

  2. 大话数据结构第四章栈的基本概念与出栈入栈操作

    一.栈的顺序存储结构 1.基本概念 栈顶就是表尾. 栈顶是栈插入和删除的地方. 栈就是只允许在表尾进行添加或删除,是顺序存储结构线性表的特例或者说简化. 为什么说是简化呢?相对于顺序存储结构来说栈只允 ...

  3. 在堆栈中,push为入栈操作,pop为出栈操作

    LinkedList提供以下方法:(ArrayList无此类方法) addFirst(); removeFirst(); addLast(); removeLast(); 在堆栈中,push为入栈操作 ...

  4. 1.栈的压栈(入栈、进栈)及出栈 2.顺序表及链表的缓存命中

    一.栈的压栈(入栈.进栈)及出栈 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底.栈中的数据元素 ...

  5. 已知入栈顺序求所有的出栈顺序已知出栈顺序求所有的入栈顺序

    一.已知入栈顺序求所有的出栈顺序 已知入栈顺序是{1,2,3,4,5},求所有的出栈顺序? 我的思路: 既然入栈顺序固定,我觉得可以使用递归来做. 先定义一个函数,比如说叫做help. //伪代码 v ...

  6. 栈 - 关于出栈序列,判断合法的出栈序列

    文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...

  7. 数据结构实验之栈与队列七:出栈序列判定

    Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...

  8. 详解+G - 数据结构实验之栈与队列七:出栈序列判定

    理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...

  9. ABCDE-入栈,不可能的出栈次序

    ABCDE 入栈,不可能的出栈次序是? 实际上最简单的办法是用笔记录一下 比如验证CDEBA的顺序可不可能,那么C先出栈于是栈应该是 C (先压入3,再弹出4) B (压入2) A (压入1) 然后弹 ...

  10. 1.若元素的进栈序列为:A、B、C、D、E,则:运用栈操作,能否得到出栈序列B、C、A、E、D和D、B、A、C、E?为什么?

    初学数据结构,有一些有意思的东西就写出来记录一下 这个是上课的时候老师出的课堂考试题目,觉得很有意思,分享给大家. 初看题目的时候,第一反应是栈是先进后出,那出栈顺序不就只有一种(E.D.C.B.A) ...

最新文章

  1. Error creating bean with name 'multipleEntityManagerFactory' defined in class
  2. vert.x 结合JAX-RS
  3. SAP UI技术演进过程
  4. verilog对YCrCb转换灰度设计及仿真
  5. 手机端适应_手机网站开发制作和电脑pc端有哪些区别
  6. linux过滤重复字符串,linux – 从制表符分隔文件中删除重复的单词/字符串
  7. 给列表项标记添加自定义图像
  8. 56. Attribute value 属性
  9. linux落字效果代码,Linux 用echo输出带特效的字体
  10. ies文件 vray_VRayIES灯光
  11. Vue使用iconfont(阿里图标库)
  12. 捷径app 未能连接到服务器,iOS13快捷指令无法添加第三方捷径的解决办法
  13. 软件缺陷静态分析CodeSonar
  14. php odbc informix,odbc php informix 问题求助
  15. csp刷题总结(如此编码python版本)
  16. 递归求最大素因数(java)
  17. EffectiveC++-条款39:明智而审慎地使用 private 继承
  18. 2022年终总结:给心一个立住的理由【失败后自我恢复、压力中自我拯救】
  19. JAVA sku商品数据经典试题
  20. mysql 建表语句 及完整案例

热门文章

  1. 2016年1月11日
  2. 震惊,python二级真题答案流出
  3. 刘德华、杨丽娟,同是此时沦落人,相逢何必曾相识
  4. OCR 通用文字识别(截图拍照识别文字)
  5. swift iOS sceneKit 导入外部dae
  6. 路由基础(定义、作用、组成、特点、配置)
  7. PowerBI开发 第十三篇:增量刷新
  8. 什么是互联网资产 如何保护好你的这些资产
  9. android键值列表,Android Json不规则键值解析与转换
  10. B2C电商网站调用第三方支付平台流程