Skip to main content

堆疊(Stack)

概念

堆疊(Stack)是一種資料結構,遵循 "Last-In-First-Out"(LIFO)原則,即後進先出。

  • 【用途】它常用於紀錄之前的狀態,並只允許存取和操作堆疊的最尾端資料。通常無法使用索引直接存取堆疊內的元素。
  • 【情境】瀏覽器回到「上一頁」

時間複雜度

  • 遍歷:O(n)
  • Pop: O(1)
  • Push: O(1)
  • Peek: O(1)

實作 Stack

屬性方法:

  • push:存放資料至頂端,回傳新的堆疊
  • pop :刪除頂端資料,並回傳新的堆疊
  • isEmpty:判斷堆疊是否為空
  • peek: 查看堆疊最頂端的資料
  • clear: 移除堆疊的所有元素
  • size: 回傳堆疊內的元素個數,也就是資料長度

使用陣列實作 Stack

class Stack {
constructor() {
this.items = []; //使用陣列儲存 Stack 的元素
}

push(element) {
this.item.push(element);
}
pop() {
return this.items.pop();
}
peek() {
return this.items[this.items.length - 1];
}
isEmpty() {
return this.items.length === 0;
}
clear() {
this.items = [];
}
size() {
return this.items.length;
}
}

//建立實體
const stack1 = new Stack();

相關 LeetCode 題目