栈的初始化,入栈,出栈,遍历操作(代码实现)

具体代码如下:

package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/
public class ArrayStack {private int maxSize; //栈的大小(也就是底层数组的大小)private int top = -1; //栈顶指针初始化为-1private int[] stack; //创建一个数组表示栈public ArrayStack(){//默认创建大小为10的栈this.maxSize = 10;this.stack = new int[maxSize];}public ArrayStack(int maxSize) {this.maxSize = maxSize;this.stack = new int[maxSize];}//判断栈是否满的方法public boolean isFull(){return top == maxSize - 1;}//判断栈空的方法public boolean isEmpty(){return top == -1;}//入栈操作(push)public void push(int value){//判断栈是否已满if(isFull()){System.out.println("栈已满,无法添加元素!");return;}top += 1;stack[top] = value;}//出栈操作(pop)public int pop(){//判断栈是否为空if(isEmpty()){//抛出一个异常throw new RuntimeException("栈空,没有数据~~~");}int value = stack[top];top -= 1;return value;}//遍历栈操作public void list(){//判断栈是否为空if(isEmpty()){System.out.println("栈为空~~");return;}//这里我们可以使用for循环遍历,也可以使用while循环遍历,注意: 遍历的过程中top指针一定不可以变,我们只是遍历,而不是清空栈for (int i = top; i >= 0; i--) {System.out.printf("stack[%d] = %d\n",i,stack[i]);}}
}

下面给出测试程序:

package com.ffyc.stack;public class ArrayStackTest {//测试数组模拟实现的栈结构public static void main(String[] args) {ArrayStack stack = new ArrayStack(5);stack.push(3);stack.push(4);stack.push(5);stack.push(6);stack.push(7);System.out.println();stack.list();System.out.println();stack.push(8);System.out.println();boolean full = stack.isFull();System.out.println(full);System.out.println();int pop = stack.pop();System.out.println(pop);stack.pop();stack.pop();stack.pop();stack.pop();System.out.println();boolean empty = stack.isEmpty();System.out.println(empty);}
}

栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]相关推荐

  1. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

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

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

  3. 算法笔记--简单实现栈的先入后出(FILO,First In Last Out)功能

    算法笔记–简单实现栈的先入后出(FILO,First In Last Out)功能 stack 栈,是一个 先入后出(FILO,First In Last Out)的 有序列表,可以形象地理解为手枪的 ...

  4. 剑指offer-21.栈的压入弹出序列

    1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 【C++】Google C++编码规范(二):类
  2. css解决div子元素margin溢出的问题
  3. 春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
  4. 词典对象 NSDictionary与NSMutableDictionary
  5. 前端学习(168)全局事件属性
  6. VS Code HtmlFindClass 插件介绍
  7. ajax同步和异步提交的区别
  8. https://gogs.io/
  9. 胎压监测 (15 分)
  10. 调节汉化版Eclipse的字体大小
  11. linux中c语言开发环境,1.1 Linux下的C语言开发环境
  12. 关于Nand Flash行地址和列地址的计算
  13. 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
  14. SpringBoot 自动配置初探
  15. mysql注入单引号被转义_插入MySQL时转义PHP中的单引号[重复]
  16. 使用java计算数组方差和标准差
  17. 2011推荐系统论坛游记:爱的反义词不是恨
  18. 自动驾驶高精地图调研
  19. 和2016年的自己握手言和
  20. GUI programming with wxPython 之 XRC

热门文章

  1. 自动化专业面试题库100则
  2. Java中计算日期间隔
  3. STM32+TFT+OV7670实现图片的显示
  4. [益智]:3ml 5ml杯子各一个,拼出4ml的容量
  5. 54岁 Switch 最强破解团队成员提前释放,仍要还任天堂 1450 万美元 !
  6. 服务治理的狭义治理和广义治理介绍
  7. 其他团队的延误造成的延误成本,第5部分
  8. 2020中考计算机统考答案,2020中考必读 | 中考电脑阅卷流程“潜规则”!读完孩子少丢20分!(转给中考生)...
  9. webpack如何设置html中img路径和css中背景图片路径区别开
  10. 人脸对齐(三):Face Alignment by Explicit Shape Regression