Data Structure,
여러 데이터들의 묶음을 어떻게 사용하고 저장할지 정의한 것.
ㅇ LIFO(Last In First Out), 마지막으로 들어간게 처음 나온다!
쌓여있는 접시와 같다.
접시를 아래부터 쌓고 제일 윗접시부터 사용하는 것과 같은 구조.
아래 그림을 보면 이해가 쉽다.
위 그림을 보면서 메소드들의 코드를 확인해보자.
아래는 Stack의 기본적인 메소드들.
Class Stack {
Constructor() {]
//기본적으로 있어야하는 프로퍼티들.
this.storage = {}; // 자료를 저장할 공간, 빈 객체를 처음 값으로.
this.top = 0; // 자료의 크기, 0을 처음값으로.
}
size() {
//객체를 배열화 해서 길이를 리턴
return Object.keys(this.storage).length;
}
push(element) {
//마지막에 element push
this.top++;
this.storage[this.top] = element;
}
pop() {
//마지막 값 삭제
let result = this.storage[this.top];
delete this.storage[this.top];
this.top--;
return result;
}
}
ㅇ FIFP(First In, First Out), 먼저 들어간게 먼저 나온다!
놀이공원에 줄 서 있는 사람들과 같다.
제일 먼저 줄을 선 사람이 제일 먼저 놀이기구를 타는 것과 같은 구조.
아래의 그림을 보면 이해가 쉽다.
위 그림을 보면서 메소드들의 코드를 확인해보자.
아래는 Queue의 기본적인 메소드들.
class Queue {
constructor() {
//기본적으로 있어야하는 프로퍼티들.
this.storage = {}; // 자료를 저장할 공간, 빈 객체를 처음 값으로.
this.front = 0; // Queue의 시작을 나타내는 값.
this.rear = 0; // Queue의 끝을 나타내는 값.
}
size() {
//객체를 배열화 해서 length 리턴
return Object.keys(this.storage).length;
}
enqueue(element) {
//끝에 element 삽입
this.storage[this.rear] = element;
this.rear++;
}
dequeue() {
//맨 앞의 값 제거
let result = this.storage[this.front];
delete this.storage[this.front];
this.front++;
return result;
}
}