import java.util.Scanner;
/**
* @author lijia
* @version 1.0
*/
public class ArrayStackTest {
public static void main(String[] args) {
//测试ArrayStack
ArrayStack stack = new ArrayStack(4);
String key = "";
boolean loop = true; //控制是否退出菜单
Scanner in = 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("****************************");
System.out.println("请输入:");
key = in.next();
switch (key) {
case "show":
stack.list();
break;
case "push":
System.out.println("请输入一个数");
stack.push(in.nextInt());
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":
in.close();
loop = false;
System.out.println("程序退出");
break;
default:
break;
}
}
}
}
class ArrayStack {
private int size; //栈的大小
private int[] stack;//数组,数组模拟栈,数据就放在数组中
private int top = -1; //top表示栈顶,初始化值为-1
//构造器
public ArrayStack(int size) {
this.size = size;
stack = new int[this.size];
}
//栈满
public boolean isFull() {
return top == size - 1;
}
//栈空
public boolean isEmpty() {
return top == -1;
}
//入栈-push
public void push(int value) {
//先判断栈是否满
if (isFull()) {
System.out.println("栈满");
}
top++;
stack[top] = value;
}
//出栈,将栈顶数据返回
public int pop() {
//先判断栈是否空
if (isEmpty()) {
System.out.println("栈空,没有数据");
}
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] );
}
}
}
Java数据结构 | 栈的代码实现
最新推荐文章于 2022-07-22 11:32:40 发布