the little guide of queue in javascrip - Lee-hyuna/33-js-concepts-kr GitHub Wiki
μλ°μ€ν¬λ¦½νΈμ ν
νλ κ°λ¨ν λ°μ΄ν° ꡬ쑰μ΄λ€. μμλ₯Ό λ€μͺ½(tail)μμ μΆκ° μμͺ½(head)μμ μμ ν μ μλ€.
μ΄ λμμ μ μ μ μΆ (First In First Out )μ΄λΌκ³ νλ€.
νλ μ ν(linear) λ°μ΄ν° ꡬ쑰μ΄λ€. λ§€μ° μ€μν κ°λ μ κ°μ₯ μ€λλ μμλ₯Ό λ¨Όμ μμ νλ€λ κ²μ΄λ€.
μμ©
- νλ 첫 λ²μ§Έ νλͺ©λΆν° μμλλ‘ κ°μ²΄λ₯Ό κ΄λ¦¬ν΄μΌ ν λλ§λ€ μ¬μ©λλ€.
- μλ₯Όλ€μ΄ νλ¦°ν°μ λ¬Έμ μΆλ ₯, λκΈ°μλ€κ² μ°¨λ‘λλ‘ μλ΅νλ μ½ μΌν° μμ€ν λ±μ΄ μλ€.
μμ±
- λ°°μ΄ λλ λ§ν¬λ 리μ€νΈ μ¬μ©νμ¬ νλ₯Ό ꡬνν μ μλ€.
μλ°μ€ν¬λ¦½νΈμμλ shift λ° popκ³Ό κ°μ λ°°μ΄ λ©μλλ₯Ό μ¬μ©ν μ μμΌλ―λ‘ *ν**λ₯Ό λ§λλ κ²μ λ§€μ° κ°λ¨νλ€.
κΈ°μ΅νκΈ°
unshift
: μμλ₯Ό λ°°μ΄μ 맨 μμ μΆκ°νλ€.pop
: λ°°μ΄μ λ§μ§λ§ μμλ₯Ό μ κ±°νλ€.
ꡬννκΈ°
λ¨Όμ κ°μ₯ λ¨Όμ ν μΌμ λΉ λ°°μ΄μ κ°μ§ ν μμ±μ ν¨μλ₯Ό λ§λλ κ²μ΄λ€.
function Queue() {
this.data = [];
}
this
λ μ°λ¦¬κ° λ§λ κ°μ²΄λ₯Ό κ°λ¦¬μΌμΌ νκΈ° λλ¬Έμ μ¬μ©νλ€λ κ²μ κΈ°μ΅νλΌ.
λ©μλ
μ£Όμ λ©μλλ addμ removeκ° μλ€.
Queue.prototype.add = function(record) {
this.data.unshift(record);
}
Queue.prototype.remove = function() {
this.data.pop();
}
μΆκ°λ‘ 3κ°μ 보쑰 λ©μλλ₯Ό μΆκ°νλ€.
Queue.prototype.first = function() {
return this.data[0];
}
Queue.prototype.last = function() {
return this.data[this.data.length - 1];
}
Queue.prototype.size = function() {
return this.data.length;
}
κ·Έλ¬λ©΄ μλμ κ°μ κ²°κ³Όλ₯Ό μ»μ μ μλ€.
const q = new Queue():
q.add(1);
q.add(2);
q.add(3);
console.log(q);
κ°μ₯ μ€λλ μμλ 1μ μ μΌ λ¨Όμ μΆκ°νκΈ° λλ¬Έμ 1μ΄λ€.
λͺ» λ―Ώκ² μΌλ©΄ last λ©μλλ₯Ό μ¬μ©νμ¬ νμΈ ν μ μλ€.
console.log(q.first());
// -> 3
console.log(q.last());
// -> 1
λν remove λ©μλλ₯Ό μ¬μ©νλ©΄ κ°μ₯ μ€λλ μμμΈ 1μ΄ μ κ±°λλ€.
q.remove();
console.log(q);
λ§μ§λ§μΌλ‘ size λ©μλλ₯Ό νΈμΆν κ²°κ³Όλ μλμ κ°λ€.
console.log(q.size())
// -> 2
λ§μ§λ§ μμλ₯Ό μ κ±°νκ³ νΈμΆνκΈ° λλ¬Έμ 2κ° λ°νλλ€.
μμ ν μμ : https://github.com/germancutraro/Queue-Data-Structure