iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1
自我挑戰組

30天從零到有,帶你進入程式的世界系列 第 10

[Day 10] Javascript 資料結構: 堆疊 (Stack)

  • 分享至 

  • xImage
  •  

昨天介紹了 Javascript EventLoop,大概可以了解Javascript在瀏覽器中的運作方式了。
那Stack又是甚麼呢?

今天我們來介紹一下資料結構,包括EventLoop中有使用到的Stack(堆疊),還有另外一個Quene(佇列)


Stack

Stack 是一種後進先出的數據結構,我們稱它為Last In, First Out (LIFO) 。想像一下當你在自助餐店拿盤子的時候,一定都會是從最上方拿盤子的,而最上方的盤子就會是最新放上去的,而堆疊的順序就是這樣。
https://ithelp.ithome.com.tw/upload/images/20230924/20162648C0NynKhrEG.png
堆疊(Stack)的示意圖 (來源:https://www.raulmelo.me/en/blog/data-structure-in-javascript-stack)

在Stack中有幾個比較基本的方法:

  • Push : 添加元素
  • pop : 刪除最後添加的元素
    第一個push(), 就是在數據的上方添加了新的元素,這個數據如果被提取(pop)的話也會最先出來,相當於我們在盤子堆的上方在放了一個新盤子。
function Stack() {
  let items = [];
  function push(element) {
    items.push(element);
  }
}

第二個pop(),就是在數據中提取最後放入的那個element(元素),也就是最新放上去的那個盤子

function Stack() {
  let items = [];
  function push(element) {
    items.push(element);
}

另外還有一個方法是peek(),peek 用於查看stack最頂部的元素而且不會刪除它

function Stack() {
  function peek() {
    return items[items.length - 1];
  }
}

總合起來後,可以將程式寫成下面這個樣子,並且當我們依序存進去A, B, C這三個元素後,當我們pop()出來,第一個會出現的會是C元素,接著我們用peek()方法查看最頂部的元素是哪一個,會出現B。 代表剛剛依序存進去的A,B,C 排序方式為: A在最底部,B在中間,而C在最頂層

function Stack() {
  let items = [];
  function push(element) {
    items.push(element);
  }
  function pop() {
    return items.pop();
  }
  function peek() {
    return items[items.length - 1];
  }
  return {
    push,
    pop,
    peek,
  };
}


const stack = new Stack();
stack.push("A");
stack.push("B");
stack.push("C");
console.log(stack.pop());
// C
console.log(stack.peek());
// B

參考來源: https://www.raulmelo.me/en/blog/data-structure-in-javascript-stack


上一篇
[Day 9] Event Loop
下一篇
[Day 11] JavaScript 資料結構: 佇列 (Quene)
系列文
30天從零到有,帶你進入程式的世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言