棧和隊列是常用的數據結構。在Java中,棧和隊列可以通過數組或鏈表來實現。
棧的實現:
public class MyStack { private int[] data; private int top; public MyStack(int size) { data = new int[size]; top = -1; } public void push(int x) { data[++top] = x; } public int pop() { return data[top--]; } public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == data.length - 1; } }
以上代碼使用數組實現了一個基本的整型棧。在構造函數中,創建了一個指定大小的數組。push和pop方法分別在棧頂加入元素和刪除棧頂元素。isEmpty和isFull方法判斷棧是否為空或已滿。
隊列的實現:
public class MyQueue { private int[] data; private int front; private int rear; public MyQueue(int size) { data = new int[size]; front = rear = -1; } public boolean isEmpty() { return front == rear; } public boolean isFull() { return rear == data.length - 1; } public void enQueue(int x) { if (!isFull()) { data[++rear] = x; } } public int deQueue() { if (!isEmpty()) { return data[++front]; } else { // 或者拋出異常:throw new RuntimeException("Queue is empty!") return -1; } } }
以上代碼使用了數組實現一個基本的整型隊列。front和rear分別代表隊頭和隊尾。enQueue和deQueue方法分別入隊和出隊。isEmpty和isFull方法分別判斷隊列是否為空或已滿。
總的來說,無論使用數組還是鏈表,棧和隊列的底層實現都是非常基礎和重要的。了解和掌握其實現原理,可以幫助我們更好地理解和應用棧和隊列這兩種數據結構。