資料結構 : Stack 堆疊 Queue 佇列

更新 發佈閱讀 4 分鐘

Stack 堆疊

特性

  • 先進後出(LIFO, Last In First Out)
  • 意思是:最後放進去的東西,會最先被拿出來。
  • 可以想像成:疊盤子,你最後放上去的盤子最先拿下來。

操作

  • push(item):放入堆疊
  • pop():取出並移除堆疊頂端的元素
  • peek():查看堆疊頂端元素,但不移除

Java 實作

import java.util.Stack;

public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();

// 放入元素
stack.push("蘋果");
stack.push("香蕉");
stack.push("橘子");

System.out.println("目前堆疊: " + stack); // [蘋果, 香蕉, 橘子]

// 查看頂端元素
System.out.println("堆疊頂端: " + stack.peek()); // 橘子

// 取出元素
String removed = stack.pop();
System.out.println("拿出的元素: " + removed); // 橘子
System.out.println("剩下的堆疊: " + stack); // [蘋果, 香蕉]
}
}

Queue 佇列

特性

  • 先進先出(FIFO, First In First Out)
  • 意思是:最早放進去的東西,會最先被拿出來。
  • 可以想像成:排隊買票,排最前面的人最先被服務。

操作

  • offer(item):放入佇列
  • poll():取出並移除佇列最前端元素
  • peek():查看最前端元素,但不移除

Java 操作

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();

// 放入元素
queue.offer("蘋果");
queue.offer("香蕉");
queue.offer("橘子");

System.out.println("目前佇列: " + queue); // [蘋果, 香蕉, 橘子]

// 查看最前端元素
System.out.println("佇列最前面: " + queue.peek()); // 蘋果

// 取出元素
String removed = queue.poll();
System.out.println("拿出的元素: " + removed); // 蘋果
System.out.println("剩下的佇列: " + queue); // [香蕉, 橘子]
}
}

總結

Stack 想像是一個箱子, Queue 想像為排隊。





留言
avatar-img
Krist
1會員
8內容數
您好, 目前是軟體工程師 Krist
Krist 的其他內容
2026/01/29
本文將深入淺出地介紹 Set 資料結構的核心概念,強調其「不重複」與「順序不重要」的特性。展示 Set 的基本用法,並探討適用於 Set 的情境,例如去除重複資料、快速查找元素以及在學生、帳號、商品編號等場景的應用。此外,文章還將說明如何取得 Set 中的元素,最後總結 Set 的關鍵特點。
2026/01/29
本文將深入淺出地介紹 Set 資料結構的核心概念,強調其「不重複」與「順序不重要」的特性。展示 Set 的基本用法,並探討適用於 Set 的情境,例如去除重複資料、快速查找元素以及在學生、帳號、商品編號等場景的應用。此外,文章還將說明如何取得 Set 中的元素,最後總結 Set 的關鍵特點。
2025/11/27
本文旨在釐清初學者常混淆的陣列 (Array) 與串列 (List) 的差異。透過生動的比喻,闡述兩者的核心特性,如固定大小、資料型態統一性、存取速度等,並針對 Java 提供了 ArrayList 與 LinkedList 的應用情境分析,幫助開發者在不同場景下做出最佳選擇。
Thumbnail
2025/11/27
本文旨在釐清初學者常混淆的陣列 (Array) 與串列 (List) 的差異。透過生動的比喻,闡述兩者的核心特性,如固定大小、資料型態統一性、存取速度等,並針對 Java 提供了 ArrayList 與 LinkedList 的應用情境分析,幫助開發者在不同場景下做出最佳選擇。
Thumbnail
2025/11/26
深入解析雜湊表 (Hash Table) 的核心概念、運作原理、優缺點以及實際應用。瞭解雜湊函式如何實現 O(1) 的快速資料查找、新增與刪除,並探討雜湊衝突的解決方案,如鏈式串接與開放定址法。適用於軟體開發、資料庫與快取系統等場景。
Thumbnail
2025/11/26
深入解析雜湊表 (Hash Table) 的核心概念、運作原理、優缺點以及實際應用。瞭解雜湊函式如何實現 O(1) 的快速資料查找、新增與刪除,並探討雜湊衝突的解決方案,如鏈式串接與開放定址法。適用於軟體開發、資料庫與快取系統等場景。
Thumbnail
看更多