目录

用数组模拟栈的使用,由于栈是一种有序列表,当然可以使用数组的结构来存储栈的数据内容。

- class Stack{
- private int maxSize; // 栈的大小
- private int[] stack; // 数组,模拟栈
- private int top=-1; // top表示栈顶,初始化为-1
-
- // 构造器
- public Stack(int maxSize) {
- this.maxSize = maxSize;
- stack=new int[this.maxSize];
- }
- }
- // 判断栈是否为空
- public boolean isEmpty(){
- return top==-1;
- }
- // 判断栈是否满
- public boolean isFull(){
- return top+1==maxSize;
- }
- // 入栈
- public void push(int value){
- // 先判断栈是否满
- if(isFull()){
- System.out.println("栈满");
- return;
- }
- top++;
- stack[top]=value;
- }
- // 出栈 ,将栈顶元素返回
- public int pop(){
- if(isEmpty()){
- throw new RuntimeException("栈空");
- }
- int value=stack[top];
- top--;
- return value;
- }
- // 显示栈的情况
- public void list(){
- if(isEmpty()){
- System.out.println("栈空");
- return;
- }
- // 需要从栈顶开始显示数据
- for(int i=top;i>=0;i--){
- System.out.printf("stack[%d]=%d",i,stack[i]);
- }
- }
- public class ArrayStack {
- public static void main(String[] args) {
- System.out.println("开始测试栈");
- Stack stack=new Stack(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){
- System.out.println(e.getMessage());
- }
- break;
- case "exit":
- scanner.close();
- loop=false;
- break;
- default:
- break;
- }
- }
- System.out.println("程序退出");
- }
- }
测试结果图:





- public class ArrayStack {
- public static void main(String[] args) {
- System.out.println("开始测试栈");
- Stack stack=new Stack(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.printf("请输入你的选择:");
- key=scanner.next();
- switch (key){
- case "show":
- stack.list();
- break;
-
- case "push":
- System.out.printf("请输入入栈的数据:");
- int value=scanner.nextInt();
- stack.push(value);
- break;
- case "pop":
- try{
- int res=stack.pop();
- System.out.printf("出栈的数据是:%d\n",res);
- }catch (Exception e){
- System.out.println(e.getMessage());
- }
- break;
- case "exit":
- scanner.close();
- loop=false;
- break;
- default:
- break;
- }
- }
- System.out.println("程序退出");
- }
- }
-
- class Stack{
- private int maxSize; // 栈的大小
- private int[] stack; // 数组,模拟栈
- private int top=-1; // top表示栈顶,初始化为-1
-
- // 构造器
- public Stack(int maxSize) {
- this.maxSize = maxSize;
- stack=new int[this.maxSize];
- }
-
- // 判断栈是否为空
- public boolean isEmpty(){
- return top==-1;
- }
- // 判断栈是否满
- public boolean isFull(){
- return top+1==maxSize;
- }
-
- // 入栈
- public void push(int value){
- // 先判断栈是否满
- if(isFull()){
- System.out.println("栈满");
- return;
- }
- top++;
- stack[top]=value;
- }
-
- // 出栈 ,将栈顶元素返回
- public int pop(){
- if(isEmpty()){
- throw new RuntimeException("栈空");
- }
- int value=stack[top];
- top--;
- return value;
- }
-
- // 显示栈的情况
- public void list(){
- if(isEmpty()){
- System.out.println("栈空");
- return;
- }
- // 需要从栈顶开始显示数据
- for(int i=top;i>=0;i--){
- System.out.printf("stack[%d]=%d\n",i,stack[i]);
- }
- }
- }