这篇文章主要介绍了java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

什么是栈

1.栈的英文是stack

2.栈是一个先入后出的有序列表

3.栈是限制线性表元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端是,为变化的一端,成为栈顶,另外的一端为固定的一端为栈底

EVBhnjgy

4.栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除的情况刚好相反,最后放入的元素先删除,最先放入的元素后删除

栈的应用场景

1.子程序的调用,在跳向子程序之前会先将下一条指令的地址存放在堆栈中,直到子程序执行后再将地址取出,最后回到原来的程序之中

2.递归的调用,和子程序的调用类似,只是出了存储下一个指令的地址外,也将参数、区域变量、等数据压入栈中

3.表达式的转换与求值

4.二叉树的遍历

5.图形的深度优先搜索

代码

package stack;

public 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;

}

//入栈-push

public void push(int value) {

//先判断是否栈满了

if(isFull()) {

System.out.println("栈已经满了~");

return;

}else {

top++;

stack[top]=value;

}

}

//出栈-pop

public int pop() {

if(isEmpty()) {

throw new RuntimeException("栈已经空了~");

}

int value=stack[top];

top--;

return vaEVBhnjgylue;

}

//遍历栈

public void list() {

if(isEmpty()) {

System.out.println("栈空,没有数据~");

}

for(int i=top;i>=0;i--) {

System.out.printf

测试类

package stack;

import java.util.Scanner;

public class TestArrayList {

public static void main(String[] args) {

// TODO Auto-generated method stub

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) {

// TODO: handle exception

System.out.println(e.getMessage());

}

编程客栈 break;

case "exit":

scanner.close();

loop=false;

break;

default:

break;

http://www.cppcns.com }

}

System.out.println("程序退出!");

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Java实现顺序栈原理解析

本文地址: http://www.cppcns.com/ruanjian/java/286570.html

java实现顺序栈_Java实现顺序栈原理解析相关推荐

  1. java 顺序栈_Java实现顺序栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...

  2. java顺序栈和链栈_Java的顺序栈和链式栈

    栈的定义 栈是限制在表的一段进行插入和删除的运算的线性表,通常能够将插入.删除的一端为栈顶,例外一端称为栈底,当表中没有任何元素的时候称为空栈. 通常删除(又称"退栈")叫做弹出p ...

  3. java 堆 栈 ===_Java堆,栈,堆栈

    栈(stack):是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量.栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器 在java中,所有基本类型和引用类型都在栈中存储. ...

  4. python全栈和java全栈_Java和全栈开发哪个发展前景好

    展开全部 全栈和java哪个能更好62616964757a686964616fe58685e5aeb931333365633839迎合市场需求,有同学咨询学习哪个在以后前景和工作薪水上能更吃香,首先我 ...

  5. java switch 类型_Java switch case数据类型原理解析

    这篇文章主要介绍了Java switch case数据类型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 中 switch cas ...

  6. java 顺序栈_java用顺序栈实现数制转换 求完整程序!!

    展开全部 用顺序栈实现数制e69da5e6ba9062616964757a686964616f31333335343436转换的Java程序如下:import java.util.Scanner; i ...

  7. java排序方法调用_Java实现顺序查找、二分查找、冒泡排序、方法调用

    上帝没给我成为富二代的机会,但是给了我成为富一代的机会! 主子很萌:敲代码是个快乐的过程代码截图/图1 题目题目/图2 程序源代码 import java.util.Scanner; /** * * ...

  8. java string 栈_Java堆和栈的区别(String类)

    堆与栈 Java的堆是一个运行时数据区,对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等指令建立,它们不需要程序代码来显式地释放.堆是由垃圾回 ...

  9. java什么是栈_java什么是栈

    系统中的堆.栈和数据结构堆.栈不是一个概念.可以说系统中的堆.栈是真实的内存物理区,数据结构中的堆.栈是抽象的数据存储结构. 栈:实际上就是满足后进先出的性质,是一种数据项按序排列的数据结构,只能在一 ...

最新文章

  1. asp从后台调出的公式怎么参与运算_Excel中使用公式老是出错,这几招帮你轻松解决~...
  2. java:数据结构(二)栈的应用(进制转换全收集)
  3. Spring5源码 - 00 IOC容器创建_前期准备
  4. linux jdk 安装
  5. golang package 是什么意思?一份来自初学者的golang package体验指南
  6. AI 智能会议系统(36)---AI 书单
  7. 16 bit float 存储_小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)...
  8. 使用旧版本tensorflow出现了negative等报错的问题,AttributeError: 'module' object has no attribute 'xxx'
  9. cts测试之host_config.xml
  10. FutureTask源码解析(2)——深入理解FutureTask
  11. Java命令运行没反应_cmd中执行java命令没有输出结果
  12. 在MinGW中构建GCC交叉编译器和GDB交叉调试器
  13. 解决 给Example类序列化依旧报:Serialized class com.chaz.pojo.SpaItemExample must implement java.io...需要序列化的错误
  14. 用户名修改后进入不了计算机,更改计算机用户名后不能登录到桌面怎么办?
  15. Paper再现:MD+AI自动编码机探测蛋白变构(四):DIO的生成和聚类
  16. 有选择的忽略PyCharm 3的PEP8语言风格警告提示信息
  17. [cesium] | 城市警情模拟
  18. Eclipse初始化
  19. Vs2010安装svn
  20. 博客同步至 OSCHINA

热门文章

  1. java常用类总结_java——常用类的总结
  2. matlab重置矩阵大小resize,JS resize事件:窗口重置
  3. eclipse运行android程序,总是启动一个新的AVD模拟器,解决办法
  4. java 正则出特殊字符_java正则_特殊字符处理
  5. 协议类接口 - NAND
  6. 实现一个简单的Tomcat
  7. Scrapy爬虫(8)scrapy-splash的入门
  8. 【机器学习】Python 快速入门笔记
  9. virtualbox Linux与Windows共享文件
  10. pap chap认证配置