
LIFO(Last In First Out) 자료구조
const array = [];
const stackPush = (value) => {
array.push(value);
}
const stackPop = () => {
return array.pop();
}
stackPush(1); // [1]
stackPush(2); // [1, 2]
stackPop(); // [1]

FIFO(First In First Out) 자료구조
class Queue {
constructor() {
this.queue = [];
this.front = 0;
this.rear = 0;
}
enqueue(value) {
this.queue[this.rear++] = value;
}
dequeue() {
const value = this.queue[this.front];
delete this.queue[this.front];
this.front++;
return value;
}
peek() {
return this.queue[this.front];
}
size() {
return this.rear - this.front;
}
}
const queue = new Queue();
queue.enqueue(1); // [1]
queue.enqueue(2); // [1, 2]
queue.peek(); // 1
queue.size(); // 2
queue.dequeue(); // [1] 2
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor() {
this.front = null;
this.rear = null;
this.size = 0;
}
enqueue(value) {
const newNode = new Node(value);
this.size++;
if (this.front === null) {
this.front = newNode;
this.rear = newNode;
} else {
this.rear.next = newNode;
this.rear = newNode;
}
}
dequeue() {
const value = this.front.value;
this.front = this.front.next;
if (this.front === null) {
this.rear = null;
}
this.size--;
return value;
}
peek() {
return this.front.value;
}
size() {
return this.size;
}
}

키(key)를 해싱하여 나온 index에 값(value)을 저장하는 자료구조
const table = {};
table['key1'] = 100;
table['key2'] = "Hello";
console.log(table['key1']); // 100
delete table['key1'];
const table = new Map();
table.set('key1', 100);
table.set('key2', "Hello");
console.log(table.get['key1']); // 100
const object = { a : 1 };
table.set(object, "A1"); // 객체를 key로 사용가능!
console.log(table.get(object)); // "A1"
const table = new Set();
table.add('key1'); // {'key1'}
table.add('key2'); // {'key1', 'key2'}
table.keys(); // {'key1', 'key2'}
table.values(); // {'key1', 'key2'}