Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

คลาส Stack ใน Java: โครงสร้างข้อมูล LIFO

Stack ใน Java เป็นโครงสร้างข้อมูลแบบ Last-In-First-Out (LIFO) รายการที่เพิ่มล่าสุดจะถูกนำออกก่อน ขยายมาจากคลาส Vector

แนวคิด Stack

เหมือนกองหนังสือ: วางทับกัน ดูจากบนลงล่าง ตัวบนสุด = รายการล่าสุด = นำออกก่อน

ตัวอย่างจริง: ประวัติเว็บเบราว์เซอร์ (Back button)

สร้าง Stack ใน Java

import java.util.Stack;

Stack<DataType> stackName = new Stack<>();

// ตัวอย่าง: Stack เก็บชื่อหนังสือ
Stack<String> books = new Stack<>();

เมธอดหลักของ Stack

push() - เพิ่มข้อมูล

books.push("Pride and Prejudice");
books.push("Nineteen Eighty-Four");
books.push("The Great Gatsby");
// [Pride and Prejudice, Nineteen Eighty-Four, The Great Gatsby]

pop() - นำข้อมูลบนสุดออก

String removed = books.pop(); // นำ "The Great Gatsby" ออก
// Books: [Pride and Prejudice, Nineteen Eighty-Four]
// Removed book: The Great Gatsby

peek() - ดูข้อมูลบนสุด (ไม่เอาออก)

String top = books.peek(); // "Nineteen Eighty-Four"

empty() - ตรวจสอบว่าว่างหรือไม่

boolean isEmpty = books.empty(); // false

search() - ค้นหาตำแหน่งข้อมูล

int pos = books.search("Pride and Prejudice"); // 1 (ตำแหน่งเริ่มจาก 1)

Deque vs Stack

Deque (Double-ended queue) เพิ่ม/ลบได้ทั้งสองข้าง ยืดหยุ่นกว่า Stack บางกรณีแนะนำให้ใช้ Deque แทน

สรุป

Stack เหมาะสำหรับงานที่ต้องการ LIFO เช่น Undo/Redo, Expression evaluation, Backtracking ใช้เมธอด push, pop, peek, empty, search จัดการข้อมูล