【一】Stack(栈)
特点:它是一个先进后出的有序列表
允许插入和删除的一端为栈顶(top),另一端为栈底(bottom)
出栈pop,入栈push
数组模拟栈
1.判断栈是否为空
2.判断栈是否已满
3.入栈
4.出栈
【二】代码实现
import java.util.Scanner;
public class StactTest2 {
public static void main(String[] args) {
Stack stack=new Stack(10);
Scanner sc=new Scanner(System.in);
boolean loop=true;
String key="";
System.out.println("show:表示遍历栈");
System.out.println("exit:表示退出程序");
System.out.println("pop:表示出栈");
System.out.println("push:表示入栈");
while(loop) {
key=sc.next();
switch(key) {
case "show":
stack.listStack();
break;
case "exit":
sc.close();
loop=false;
break;
case "pop":
try {
int num=stack.pop();
System.out.println(num);
}catch(Exception e){
System.out.println(e.getMessage());
}
break;
case "push":
System.out.println("请输入一个整数:");
int num=sc.nextInt();
stack.push(num);
break;
default:
System.out.println("输入命令异常");
break;
}
}
}
}
class Stack{
private int maxSize;
private int[] arr;
private int top=-1;
//初始化
Stack(int maxSize){
this.maxSize=maxSize;
arr=new int[maxSize];
}
//判断栈是否为空
public boolean isEmpty() {
return top==-1;
}
//判断栈是否已满
public boolean isFull() {
return top>maxSize-1;
}
//入栈
public void push(int num) {
if(isFull()) {
System.out.println("栈满~");
return;
}
top++;
arr[top]=num;
}
//出栈
public int pop() {
if(isEmpty()) {
throw new RuntimeException("栈为空");
}
int num=arr[top];
top--;
return num;
}
//显示栈即遍历栈
public void listStack() {
if(isEmpty()) {
System.out.println("栈为空");
return ;
}
for(int i=top;i>=0;i--) {
System.out.print(arr[i]+" ");
}
}
}
【三】输出截图