Java棧和隊列是數(shù)據(jù)結(jié)構(gòu)中常用的兩種數(shù)據(jù)類型。棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),隊列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。
// 棧的實現(xiàn) public class Stack { private int maxSize; // 棧的最大容量 private int[] stackArray; // 存儲數(shù)據(jù)的數(shù)組 private int top; // 棧頂指針 // 構(gòu)造方法,初始化棧的容量和棧頂指針 public Stack(int maxSize) { this.maxSize = maxSize; stackArray = new int[maxSize]; top = -1; } // 判斷棧是否為空 public boolean isEmpty() { return top == -1; } // 判斷棧是否已滿 public boolean isFull() { return top == maxSize - 1; } // 入棧 public void push(int data) { if (isFull()) { throw new RuntimeException("棧已滿,無法入棧"); } stackArray[++top] = data; } // 出棧 public int pop() { if (isEmpty()) { throw new RuntimeException("棧為空,無法出棧"); } return stackArray[top--]; } // 查看棧頂元素 public int peek() { if (isEmpty()) { throw new RuntimeException("棧為空,無棧頂元素"); } return stackArray[top]; } }
在棧的實現(xiàn)中,我們定義了一個數(shù)組來存儲棧中的數(shù)據(jù),同時使用一個指針top來表示棧頂?shù)奈恢谩H霔2僮鲗?shù)據(jù)添加到數(shù)組的末尾,并將指針top加一;出棧操作將棧頂元素從數(shù)組中移除,并將top減一。
// 隊列的實現(xiàn) public class Queue { private int maxSize; // 隊列的最大容量 private int[] queueArray; // 存儲數(shù)據(jù)的數(shù)組 private int front; // 隊列頭指針 private int rear; // 隊列尾指針 // 構(gòu)造方法,初始化隊列的容量、頭指針和尾指針 public Queue(int maxSize) { this.maxSize = maxSize; queueArray = new int[maxSize]; front = 0; rear = -1; } // 判斷隊列是否為空 public boolean isEmpty() { return rear == front - 1; } // 判斷隊列是否已滿 public boolean isFull() { return rear == maxSize - 1; } // 入隊 public void enqueue(int data) { if (isFull()) { throw new RuntimeException("隊列已滿,無法入隊"); } queueArray[++rear] = data; } // 出隊 public int dequeue() { if (isEmpty()) { throw new RuntimeException("隊列為空,無法出隊"); } return queueArray[front++]; } // 查看隊頭元素 public int peek() { if (isEmpty()) { throw new RuntimeException("隊列為空,無隊頭元素"); } return queueArray[front]; } }
在隊列的實現(xiàn)中,我們同樣使用一個數(shù)組來存儲隊列中的數(shù)據(jù),使用兩個指針front和rear分別表示隊列頭和隊列尾的位置。入隊操作將數(shù)據(jù)添加到數(shù)組末尾,并將指針rear加一;出隊操作將隊頭元素從數(shù)組中移除,并將指針front加一。
上一篇php libgd