溫馨提示×

java順序棧的實現代碼怎么寫

小億
123
2023-11-14 01:26:53
欄目: 編程語言

以下是一個簡單的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("棧的大?。?quot; + stack.size()); // 輸出:3
    }
}

運行結果為:

棧頂元素:5
棧頂元素:3
棧是否為空:false
棧的大?。?

這個代碼實現了一個簡單的順序棧,并提供了入棧、出棧、獲取棧頂元素、判斷棧是否為空、判斷棧是否已滿、獲取棧的大小等功能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女