Data Structure & Algorithm(EP.9) — คิว(Queue)
2 min readFeb 28, 2024
Queue เป็นโครงสร้างข้อมูลที่มีการเก็บข้อมูลแบบลำดับรูปแบบการจัดเก็บข้อมูลใน Queue เป็นรูปแบบ เข้าก่อนออกก่อน (First In , First Out : FIFO)
เปรียบเสมือนกับการเข้าแถวรอคิว ข้อมูลที่เข้าไปก่อนจะถูกใช้งานก่อน ข้อมูลที่เข้าหลังสุดจะถูกใช้งานทีหลัง
การทำงานของคิว (Queue)
- Enqueue คือการนำสมาชิกมาต่อตำแหน่งท้ายสุดของคิว
- Dequeue คือการนำสมาชิกตำแหน่งหน้าสุดออกจากคิว
สร้างคิว (Queue)
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(value) {
const newNode = new Node(value);
this.first = newNode;
this.last = newNode;
this.length = 1;
}
printQueue() {
let temp = this.first;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
}
let myQueue = new Queue(1);
console.log(myQueue)
- Enqueue คือการนำสมาชิกมาต่อตำแหน่งท้ายสุดของคิว
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(value) {
const newNode = new Node(value);
this.first = newNode;
this.last = newNode;
this.length = 1;
}
printQueue() {
let temp = this.first;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
enqueue(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
this.length++;
}
}
let myQueue = new Queue(1);
myQueue.enqueue(2)
myQueue.enqueue(3)
console.log(myQueue);
- Dequeue คือการนำสมาชิกตำแหน่งหน้าสุดออกจากคิว
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(value) {
const newNode = new Node(value);
this.first = newNode;
this.last = newNode;
this.length = 1;
}
printQueue() {
let temp = this.first;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
enqueue(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
this.length++;
}
dequeue() {
if (this.length === 0) return undefined;
let temp = this.first;
if (this.length === 1) {
this.first = null;
this.last = null;
} else {
this.first = this.first.next;
temp.next = null;
}
this.length--;
return temp;
}
}
let myQueue = new Queue(1);
myQueue.enqueue(2);
myQueue.enqueue(3);
myQueue.dequeue()
console.log(myQueue);
บทความที่เกี่ยวข้อง
- 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