栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]
栈的初始化,入栈,出栈,遍历操作(代码实现)
具体代码如下:
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]相关推荐
- 【剑指offer-Java版】22栈的压入弹出序列
栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...
- 大话数据结构第四章栈的基本概念与出栈入栈操作
一.栈的顺序存储结构 1.基本概念 栈顶就是表尾. 栈顶是栈插入和删除的地方. 栈就是只允许在表尾进行添加或删除,是顺序存储结构线性表的特例或者说简化. 为什么说是简化呢?相对于顺序存储结构来说栈只允 ...
- 算法笔记--简单实现栈的先入后出(FILO,First In Last Out)功能
算法笔记–简单实现栈的先入后出(FILO,First In Last Out)功能 stack 栈,是一个 先入后出(FILO,First In Last Out)的 有序列表,可以形象地理解为手枪的 ...
- 剑指offer-21.栈的压入弹出序列
1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 1.栈的压栈(入栈、进栈)及出栈 2.顺序表及链表的缓存命中
一.栈的压栈(入栈.进栈)及出栈 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底.栈中的数据元素 ...
- Java之根据入栈顺序是否能得到出栈顺序
入栈.出栈顺序匹配 前言 一.Java入栈.出栈 1.例题 二.题解 A.纯正的模拟 B.LinkedHashSet C.利用CPU 总结 参考文献 前言 给出入栈顺序,匹配一个出栈顺序是否合法,即出 ...
- 已知入栈顺序求所有的出栈顺序已知出栈顺序求所有的入栈顺序
一.已知入栈顺序求所有的出栈顺序 已知入栈顺序是{1,2,3,4,5},求所有的出栈顺序? 我的思路: 既然入栈顺序固定,我觉得可以使用递归来做. 先定义一个函数,比如说叫做help. //伪代码 v ...
- 栈 - 关于出栈序列,判断合法的出栈序列
文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...
- 数据结构实验之栈与队列七:出栈序列判定
Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...
最新文章
- 【C++】Google C++编码规范(二):类
- css解决div子元素margin溢出的问题
- 春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
- 词典对象 NSDictionary与NSMutableDictionary
- 前端学习(168)全局事件属性
- VS Code HtmlFindClass 插件介绍
- ajax同步和异步提交的区别
- https://gogs.io/
- 胎压监测 (15 分)
- 调节汉化版Eclipse的字体大小
- linux中c语言开发环境,1.1 Linux下的C语言开发环境
- 关于Nand Flash行地址和列地址的计算
- 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
- SpringBoot 自动配置初探
- mysql注入单引号被转义_插入MySQL时转义PHP中的单引号[重复]
- 使用java计算数组方差和标准差
- 2011推荐系统论坛游记:爱的反义词不是恨
- 自动驾驶高精地图调研
- 和2016年的自己握手言和
- GUI programming with wxPython 之 XRC
热门文章
- 自动化专业面试题库100则
- Java中计算日期间隔
- STM32+TFT+OV7670实现图片的显示
- [益智]:3ml 5ml杯子各一个,拼出4ml的容量
- 54岁 Switch 最强破解团队成员提前释放,仍要还任天堂 1450 万美元 !
- 服务治理的狭义治理和广义治理介绍
- 其他团队的延误造成的延误成本,第5部分
- 2020中考计算机统考答案,2020中考必读 | 中考电脑阅卷流程“潜规则”!读完孩子少丢20分!(转给中考生)...
- webpack如何设置html中img路径和css中背景图片路径区别开
- 人脸对齐(三):Face Alignment by Explicit Shape Regression