顺序栈的实现 完成顺序栈类的构造方法、入栈、出栈、遍历、判空、取栈顶元素,并提供测试类进行方法测试,使用java 编写
时间: 2024-10-11 21:02:23 浏览: 56
在 Java 中,我们可以创建一个基于数组的简单顺序栈(Stack)实现。首先,我们定义一个 Stack 类,它包含一个整型数组作为存储结构,以及几个基本的方法:
```java
public class SimpleStack {
private int[] stackArray;
private int top;
// 构造方法初始化栈容量
public SimpleStack(int size) {
stackArray = new int[size];
top = -1; // 初始栈顶位置表示为空
}
// 入栈(push)操作
public void push(int item) {
if (top == stackArray.length - 1) {
throw new IllegalStateException("Stack is full");
}
stackArray[++top] = item;
}
// 出栈(pop)操作
public int pop() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return stackArray[top--]; // 减一是因为 top 是指向下一个位置的索引
}
// 遍历栈
public void traverse() {
if (isEmpty()) {
System.out.println("Stack is empty");
} else {
for (int i = top; i >= 0; i--) {
System.out.print(stackArray[i] + " ");
}
System.out.println();
}
}
// 判空(isEmpty)
public boolean isEmpty() {
return top == -1;
}
// 取栈顶元素(peek),但不删除
public int peek() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return stackArray[top];
}
}
```
接下来是一个简单的测试类,用于演示如何使用这个顺序栈:
```java
public class StackTest {
public static void main(String[] args) {
SimpleStack stack = new SimpleStack(5);
// 测试入栈
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
// 遍历栈
stack.traverse(); // 输出:1 2 3 4 5
// 测试出栈和取栈顶元素
System.out.println("Top element: " + stack.peek()); // 输出:5
System.out.println("Popped: " + stack.pop()); // 输出:5
stack.traverse(); // 输出:1 2 3 4
// 判断是否为空
System.out.println("Is stack empty? " + stack.isEmpty()); // 输出:false
// 尝试非法操作(满栈时尝试推入)
try {
stack.push(6); // 这会抛出 IllegalStateException
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
}
}
}
```
阅读全文