阅读量:1
以下是一个简单的Java顺序栈的实现代码:
public class SeqStack<T> { private int maxSize; // 栈的最大容量 private int top; // 栈顶指针 private Object[] stackArray; // 存储元素的数组 // 构造方法 public SeqStack(int maxSize) { this.maxSize = maxSize; this.top = -1; // 初始化栈顶指针为-1 this.stackArray = new Object[maxSize]; } // 入栈操作 public void push(T element) { if (isFull()) { throw new RuntimeException("Stack is full!"); } stackArray[++top] = element; } // 出栈操作 public T pop() { if (isEmpty()) { throw new RuntimeException("Stack is empty!"); } @SuppressWarnings("unchecked") T element = (T) stackArray[top]; stackArray[top--] = null; // 将栈顶元素置为null,便于垃圾回收 return element; } // 获取栈顶元素 public T peek() { if (isEmpty()) { throw new RuntimeException("Stack is empty!"); } @SuppressWarnings("unchecked") T element = (T) stackArray[top]; return element; } // 判断栈是否为空 public boolean isEmpty() { return top == -1; } // 判断栈是否已满 public boolean isFull() { return top == maxSize - 1; } // 获取栈的大小(当前元素个数) public int size() { return top + 1; } }
可以使用以下代码测试顺序栈的功能:
public class Main { public static void main(String[] args) { SeqStack<Integer> stack = new SeqStack<>(5); stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.push(5); System.out.println("栈顶元素:" + stack.peek()); // 输出:5 stack.pop(); stack.pop(); System.out.println("栈顶元素:" + stack.peek()); // 输出:3 System.out.println("栈是否为空:" + stack.isEmpty()); // 输出:false System.out.println("栈的大小:" + stack.size()); // 输出:3 } }
运行结果为:
栈顶元素:5 栈顶元素:3 栈是否为空:false 栈的大小:3
这个代码实现了一个简单的顺序栈,并提供了入栈、出栈、获取栈顶元素、判断栈是否为空、判断栈是否已满、获取栈的大小等功能。