Java中的棧和隊列都是數據存儲結構,具有不同的特點和使用場景。
棧(Stack)是后進先出(LIFO)的數據結構,類似于一摞盤子,只有最后放入的盤子可以被取出來。棧的實現通常使用數組或鏈表等數據結構,其中push()和pop()方法是基本操作。棧可以應用于表達式求值、調用堆棧、回溯等場景。
public class Stack { private int maxSize; private int[] stackArray; private int top; public Stack(int max) { maxSize = max; stackArray = new int[maxSize]; top = -1; } public void push(int j) { stackArray[++top] = j; } public int pop() { return stackArray[top--]; } public int peek() { return stackArray[top]; } public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == maxSize - 1; } }
隊列(Queue)是先進先出(FIFO)的數據結構,類似于排隊買東西,先來的人先服務。隊列的實現通常使用數組或鏈表等數據結構,其中enqueue()和dequeue()方法是基本操作。隊列可以應用于消息隊列、任務隊列等場景。
public class Queue { private int maxSize; private long[] queArray; private int front; private int rear; private int nItems; public Queue(int s) { maxSize = s; queArray = new long[maxSize]; front = 0; rear = -1; nItems = 0; } public void insert(long j) { if (rear == maxSize - 1) rear = -1; queArray[++rear] = j; nItems++; } public long remove() { long temp = queArray[front++]; if (front == maxSize) front = 0; nItems--; return temp; } public long peekFront() { return queArray[front]; } public boolean isEmpty() { return (nItems == 0); } public boolean isFull() { return (nItems == maxSize); } public int size() { return nItems; } }
棧和隊列是常見的數據結構,掌握它們的基本原理和操作方法對于Java開發非常重要