5, java数据结构和算法: 栈 , 入栈, 出栈, 正序遍历,,逆序遍历
直接上代码:
class ArrayStack{
//用数组模拟栈
int maxSize;
int[] stack;
int top = -1;//表示栈顶
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
this.stack = new int[maxSize];
}
//1, 入栈
public void pushStack(int value){
//判断是否满
if(IsFull()){
System.out.println("栈满了,不能添加");
return;
}
top++;
stack[top] = value;
}
//2, 出栈
public int popStack() throws Exception {
if(IsEmpty()){
throw new Exception("栈为空,不能出栈");
}
int value = stack[top];
top--;
return value;
}
//3. 栈的遍历
public void show(){
if(stack.length == 0){
System.out.println("栈空,不能遍历");
return;
}
for (int i = top; i >= 0; i--) {
System.out.println(stack[i]);
}
}
private boolean IsFull() {
return top == maxSize-1;
}
private boolean IsEmpty(){
return top == -1;
}
//4, 栈的逆序遍历
public void resverShow(){
if(stack.length == 0){
System.out.println("栈空,不能遍历");
return;
}
for (int i = 0; i <= top; i++) {
System.out.println(stack[i]);
}
}
}
测试代码:
public static void main(String[] args) throws Exception {
ArrayStack stack = new ArrayStack(4);
stack.pushStack(1);
stack.pushStack(2);
stack.pushStack(3);
stack.pushStack(4);
stack.show();//4-3-2-1 先进后出
System.out.println("========");
stack.popStack();
stack.show();//3-2-1
System.out.println("==========");
stack.resverShow();//1-2-3
}
测试结果:

5, java数据结构和算法: 栈 , 入栈, 出栈, 正序遍历,,逆序遍历的更多相关文章
- 《Java数据结构与算法》笔记-CH4-3用栈实现分隔符匹配
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 利 ...
- 《Java数据结构与算法》笔记-CH4-2用栈实现字符串反转
import java.io.BufferedReader; import java.io.InputStreamReader; //用栈来实现一个字符串逆序算法 /** * 数据结构:栈 */ cl ...
- Java数据结构和算法(四):栈
一.简介 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照先进后出的原则存储数据,先进入的数据被压入栈底(Bottom),最后的数据在 ...
- 3,java数据结构和算法:约瑟夫环出队顺序, 单向环形链表的应用
什么是约瑟夫环? 就是数小孩游戏: 直接上代码: 要实现这个,只需要理清思路就好了 孩子节点: class Boy{ int no;//当前孩子的编码 Boy next; // 下一节点 public ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- java数据结构与算法之栈(Stack)设计与实现
本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
- Java数据结构和算法(一)--栈
栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack<E> extends Vector ...
- 《Java数据结构与算法》笔记-CH4-1栈的实现
class StackX{ private int maxSize; private long[] stackArray; private int top; public StackX(int siz ...
- 《数据结构与算法之美》 <06>栈:如何实现浏览器的前进和后退功能?
浏览器的前进.后退功能,我想你肯定很熟悉吧? 当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a.当你后退到页面 a,点击前进按钮,就可以重新查看页 ...
随机推荐
- POJ3762 时间段用k次
题意: 有n个任务,每个任务有自己的开始时间和结束时间,还有完成这个任务能获得的价值,然后每一天的同一个时刻只能执行一个任务,每个任务必须连续执行完成,最多可以工作m天,问这m天能获得的最 ...
- 写复杂的json方法
<?php for($j=0; $j< 30; $j++) { $Axis[$j] = "a"; } $data['xAxis']= $Axis; for($i=0; ...
- CVPR2021| TimeSformer-视频理解的时空注意模型
前言: transformer在视频理解方向的应用主要有如下几种实现方式:Joint Space-Time Attention,Sparse Local Global Attention 和Axial ...
- 使用C#实现一个PPT遥控器
说明 本项目参考了 https://github.com/yangzhongke/PhoneAsPrompter 项目来完成实现,并对其进行了一些修改完善. 完整代码可以到 https://githu ...
- VS2019解决X64无法内联汇编的问题
策略:VC编译器x64平台不支持内联汇编,我们利用在Source文件中直接添加asm文件,直接在asm文件中写汇编代码,然后将asm文件编译为OBJ文件.然后就可以在c++文件中声明asm文件中的函数 ...
- I/O流以及文件的基本操作
文件操作: 文件操作其实就是一个FIle类:我们学习文件操作就是学习File类中的方法: 文件基操: 第一部分:学习文件的基本操作(先扒源码以及文档) Constructor Description ...
- 把el-element的日期格式改为CRON
在日常的开发当中,经常会遇到格式的不匹配造成的困扰. 在日期管理上,el-element也是贴心的准备了相关的日期选择器,但是在取值的时候发现,el-element所给出的值格式可能并不是我们常用的. ...
- git合并代码到主分支
git合并login分支到master分支 1.首先查看源码状态 git status 2.添加到暂存区 git add . git status //添加到暂存区后再次查看源码状态 3.提交代码到本 ...
- [DB] Redis
为什么用Redis 是什么 一个小程序 缓存 & 数据库 单线程worker 新版本:IO threads epoll:多路复用 与Memcache区别 支持持久化:RDB快照.AOF日志 丰 ...
- KVM 添加新硬件
1 显卡 spice 2视频 qxl驱动 3 声音 ich6最好 ich9最清楚 4 输入 鼠标 智能图 否则不能VNC找不到焦点 5 磁盘大小 至少80G 否则 无法自动安装 无swap和 ...