package com.atguigu.stack;
import com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2;
import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
/**
* @创建人 wdl
* @创建时间 2021/3/20
* @描述
*/
public class ArrayStackDemo {
public static void main(String[] args) {
//测试一下ArrayStack是否正确
//先创建一个ArrayStack对象->表示栈
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.println("出栈的数据是"+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case "exit":
scanner.close();
loop=false;
break;
default:
break;
}
}
System.out.println("程序退出");
}
}
//定义一个ArrayStack表示栈
class ArrayStack{
private int maxSize;//栈的大小
private int[] stack;//数组模拟栈,数据就放在该数组
private int top=-1;//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;
}
top++;
stack[top]=value;
}
//出栈pop,将栈顶的数据返回
public int pop(){
//先判断栈是否空
if(isEmpty()){
//抛出异常
throw new RuntimeException("栈空,没有数据");
}
int value=stack[top];
top--;
return value;
}
//显示栈的情况[遍历栈],遍历时,需要从栈顶开始显示数据
public void list(){
if (isEmpty()){
System.out.println("栈空,没有数据");
}
for(int i=top;i>=0;i--){
System.out.printf("stack[%d]=%d\n",i,stack[i]);
}
}
}
用数组模拟栈
原创
©著作权归作者所有:来自51CTO博客作者Frank___7的原创作品,请联系作者获取转载授权,否则将追究法律责任
思路分析
代码实现
上一篇:查询空值中的注意事项
下一篇:带IN关键字的查询
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Docker技术栈】
Docker 技术栈
Docker -
一场关于栈的面试----最小栈的实现
一场关于栈的面试----最小栈的实现
最小值 出栈 入栈 -
数组模拟单调栈
的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。个数的左边第一个比它小的数,如果不存在则输出 −1。个整数,
算法 c++ 数据结构 #include Code -
java用数组实现栈
1.1. 栈的数据结构栈是一种先进后出的数据结果,只能在一端(称为栈顶(top))对数据项进行插入和删除。1.2. Java实现StackTe
java 数组 栈 System 数据结构 -
[数据结构][栈]数组模拟栈及其基本操作
#include <iostream>#include <cstdio>using namespace std;
数据结构 Stack #include ios