Stack - 堆疊

堆疊是一種 LIFO(Last In First Out) 的資料結構,常用方法有添加元素,讀Stack頂元素,彈出(pop) Stack頂元素,判斷堆疊是否為空。

程式碼實現

Python

  1. stack = []
  2. len(stack) # size of stack
  3. # more efficient stack
  4. import collections
  5. stack = collections.deque()

list作為最基本的python資料結構之一, 可以很輕鬆地實現stack。 如果需要更高效的stack, 建議使用deque

Methods

  • len(stack) != 0 - 判斷stack是否為空
  • stack[-1] - 取堆疊頂元素,不移除
  • pop() - 移除堆疊頂元素並返回該元素
  • append(item) - 向堆疊頂添加元素

Java

  1. Deque<Integer> stack = new ArrayDeque<Integer>();
  2. s.size(); // size of stack

JDK doc 中建議使用Deque代替Stack實現堆疊,因為Stack繼承自Vector,需要synchronized,性能略低。

Methods

  • boolean isEmpty() - 判斷堆疊是否為空,若使用 Stack 類構造則為 empty()
  • E peek() - 取堆疊頂元素,不移除
  • E pop() - 移除堆疊頂元素並返回該元素
  • E push(E item) - 向堆疊頂添加元素