数组代码实现:
package com.ws;
public class ArrayStack {
//栈的最大空间
private int maxTop;
private int stack[];
private int top;
private int bottom;
//构造器
public ArrayStack(int maxTop) {
this.maxTop = maxTop;
stack = new int[maxTop];
top = -1;
bottom = -1;
}
/**
* 判断栈是否已满
* @return true 满 ; false 没满
*/
public boolean isFull() {
if (top == maxTop - 1) {
return true;
}
return false;
}
/**
* 判断栈是否为空
* @return true 空 ; false 没空
*/
public boolean isEmpty() {
if (top == bottom) {
return true;
}
return false;
}
/**
* 入栈
* @param num
*/
public void push(int num) {
if (isFull()) {
System.out.println("栈已满 无法入栈~");
return;
}
stack[++top] = num;
}
/**
* 出栈
* @return
*/
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈已空 无法出栈~");
}
return stack[top--];
}
/**
* 遍历栈
*/
public void showStack() {
if (isEmpty()) {
throw new RuntimeException("栈已空 无法出栈~");
}
int temp = top;
while (true) {
if (temp == -1) {
break;
}
System.out.print(stack[temp--] + " ");
}
System.out.println();
}
}
测试代码:
package com.ws;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
ArrayStack stack = new ArrayStack(5);
//接受输入按键
char key = ' ';
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while(loop) {
System.out.println("s(show):遍历栈");
System.out.println("i(push): 入栈");
System.out.println("o(pop): 出栈");
System.out.println("e(exit): 退出");
key = scanner.next().charAt(0);
switch (key) {
case 's':
try {
stack.showStack();
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'i':
System.out.println("请输入入栈数据:");
stack.push(scanner.nextInt());
break;
case 'o':
try {
int num = stack.pop();
System.out.println("出栈数据为" + num);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'e':
loop = false;
break;
default:
break;
}
}
System.out.println("程序退出~~~");
}
}