堆棧(Stack)是一種常見的數據結構,符合後進先出(First In Last Out)原則,通常用於實現對象存放順序的逆序。棧的基本操作有push(添加到堆棧),pop(從堆棧刪除),peek(檢測棧頂元素且不刪除)。
/** * Created by Frank */ public class ToyStack { /** * 棧的最大深度 **/ protected int MAX_DEPTH = 10; /** * 棧的當前深度 */ protected int depth = 0; /** * 實際的棧 */ protected int[] stack = new int[MAX_DEPTH]; /** * push,向棧中添加一個元素 * * @param n 待添加的整數 */ protected void push(int n) { if (depth == MAX_DEPTH - 1) { throw new RuntimeException("棧已滿,無法再添加元素。"); } stack[depth++] = n; } /** * pop,返回棧頂元素並從棧中刪除 * * @return 棧頂元素 */ protected int pop() { if (depth == 0) { throw new RuntimeException("棧中元素已經被取完,無法再取。"); } // --depth,dept先減去1再賦值給變量dept,這樣整個棧的深度就減1了(相當於從棧中刪除)。 return stack[--depth]; } /** * peek,返回棧頂元素但不從棧中刪除 * * @return */ protected int peek() { if (depth == 0) { throw new RuntimeException("棧中元素已經被取完,無法再取。"); } return stack[depth - 1]; } }