Data Structure & Algorithm(EP.8) — สแต็ก (Stack)
2 min readFeb 28, 2024
Stack เป็นโครงสร้างข้อมูลที่มีการเก็บข้อมูลแบบลำดับรูปแบบการจัดเก็บข้อมูลใน Stack เป็นรูปแบบ เข้าก่อนออกทีหลัง (Last In , First Out : LIFO) หมายถึง ข้อมูลที่เข้าไปก่อนจะอยู่ด้านล่าง ข้อมูลที่เข้าหลังสุดจะอยู่ด้านบน
แนวคิดของสแต็ก (Stack) คือ การนำเอาข้อมูลมาเรียงซ้อนกันเป็นชั้นๆไปเรื่อยๆในพื้นที่ของสแต็ก (Stack)โดยเรียงจากล่างขึ้นบน สมาชิกหรือข้อมูลที่อยู่ด้านบนสุดจะเรียกว่า “Top Stack”
การทำงานของสแต็ก (Stack)
- Push การนำสมาชิกมาใส่ไว้บนสุดของสแต็ก (Top Stack)
- Pop การนำสมาชิกบนสุดออกไปจากสแต็ก
สร้างสแต็ก(Stack)
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor(value) {
const newNode = new Node(value);
this.top = newNode;
this.length = 1;
}
printStack() {
let temp = this.top;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
}
let myStack = new Stack(3);
console.log(myStack)
- Push การนำสมาชิกมาใส่ไว้บนสุดของสแต็ก (Top Stack)
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor(value) {
const newNode = new Node(value);
this.top = newNode;
this.length = 1;
}
printStack() {
let temp = this.top;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
push(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.top = newNode;
} else {
newNode.next = this.top;
this.top = newNode;
}
this.length++;
return this;
}
}
let myStack = new Stack(3);
myStack.push(2);
myStack.push(1)
console.log(myStack);
- Pop การนำสมาชิกบนสุดออกไปจากสแต็ก
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor(value) {
const newNode = new Node(value);
this.top = newNode;
this.length = 1;
}
printStack() {
let temp = this.top;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
push(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.top = newNode;
} else {
newNode.next = this.top;
this.top = newNode;
}
this.length++;
return this;
}
pop() {
if (this.length === 0) return undefined;
let temp = this.top;
this.top = this.top.next;
temp.next = null;
this.length--;
return temp;
}
}
let myStack = new Stack(3);
myStack.push(2);
myStack.push(1);
myStack.pop()
console.log(myStack);
บทความที่เกี่ยวข้อง
- EP.1 — รู้จักกับโครงสร้างข้อมูลและอัลกอริทึม
- EP.2 — การวัดประสิทธิภาพอัลกอริทึม
- EP.3 — อัตราการเติบโตของฟังก์ชั่น
- EP.4 — การวิเคราะห์อัลกอริทึม
- EP.5 — Big-O Notation
- EP.6 — การคำนวณ Big-O
- EP.7 — ลิงค์ลิสต์ (Linked-List)
- EP.8 — สแต็ก (Stack)
- EP.9 — คิว(Queue)
- EP.10 — ทรี (Tree)
- EP.11 — Binary Search Tree (BST)
- EP.12 — กราฟ(Graphs)
เนื้อหาที่เกี่ยวข้อง
ช่องทางการสนับสนุน
🎓 คอร์สพัฒนาเว็บด้วย JavaScript 40 Workshop