数组模拟栈结构

一、介绍

使用数组模拟栈,实现pop,push和显示功能。效果图如下:
数组模拟栈结构_第1张图片
数组模拟栈结构_第2张图片

二、源代码

package stack;

import java.util.Scanner;

public class arrayStackDemo {

	public static void main(String[] args) {
		ArrayStack stack = new ArrayStack(5);
		String opr = "";	//从键盘读取的输入
		Boolean flag = true; 
		Scanner scanner = new Scanner(System.in); //从键盘读取数据
		
		while(flag) {
			System.out.println("show: 表示显示栈");
			System.out.println("exit: 退出程序");
			System.out.println("push: 表示添加数据到栈(入栈)");
			System.out.println("pop: 表示从栈取出数据(出栈)");
			System.out.println("请输入你的选择:");	
			
			opr = scanner.next();
			
			switch(opr) {
				case "show":
					stack.showAll();
					System.out.println("");
					break;
				case "push":
					System.out.println("请输入要保存的字符:\n");
					String value = scanner.next();
					stack.pushOpr(value);
					System.out.println("");
					break;
				case "pop":
					String ans = stack.popOpr();
					System.out.printf("%s\n\n",ans);
					break;
				case "exit":
					scanner.close();
					flag = false;
					break;
				default:
					break;
			}
		}
		
		System.out.println("程序已经退出\n");
	}

}

class ArrayStack {
	private int maxSize;	// 堆栈最大的值
	private int top = -1;	// 栈顶的初始位置
	private String[] stack;	// 初始化堆栈
	
	// 构造函数
	public ArrayStack(int max) {
		this.maxSize = max;
		stack = new String[this.maxSize];
	}
	
	// 判断栈是否满了
	public Boolean isFull() {
		return this.top == this.maxSize - 1;
	}
	
	// 判断栈是否空的
	public Boolean isEmpty() {
		return this.top == -1;
	}
	
	// 进栈操作
	public void pushOpr(String str) {
		if(this.isFull()) {
			System.out.println("堆栈已经满了,不能执行进栈操作");
			return;
		}
		
		this.top++;
		this.stack[this.top] = str;
	}
	
	// 出栈操作
	public String popOpr() {
		if(this.isEmpty()) {
			System.out.println("堆栈是空的,不能执行pop操作");
			return "";
		}
		
		String ans = this.stack[this.top];
		this.stack[this.top] = null;
		this.top--;
		return ans;
	}
	
	// 显示栈里面所有的数据
	public void showAll() {
		if(this.isEmpty()) {
			System.out.println("栈区里面没有数据");
			return;
		}
		
		for(int i=this.maxSize-1;i >= 0;i--) {
			System.out.printf("this.stack[%d]=%s\n",i,this.stack[i]);
		}
	}
	
}

你可能感兴趣的:(java数据结构,栈,堆栈,数据结构,算法,数组模拟栈)