Stack & Queue 2
Class를 이용하여 stack의 데이터 타입을 정의해보자.
class Stack {
constructor() {
this.storage = {};
this.top = 0;
}
// 데이터를 저장할 빈 객체와 데이터 인덱스(indicator)인 top을 지정해주자.
size() {
return this.top;
}
// 데이터가 쌓일 때마다 인덱스인 top의 크기도 하나씩 증가한다.
// 가장 끝에 새로운 데이터를 추가해주자.
push(element) {
this.storage[this.top] = element;
this.top += 1;
}
// 데이터를 삽입했을 때, 다음과 같이 표시된다 {0: Sasha, 1: Lisa, 2: Coco ...}
// top은 indicator로 값이 추가되면 다음 추가될 값의 인덱스를 targeting하게 되어있음.
pop() {
if (this.size() <= 0) {
return;
} // 삭제시킬 요소가 없을 경우, undefined 출력
const result = this.storage[this.top - 1];
// result 변수를 선언하여 가장 끝의 값을 할당해주자
delete this.storage[this.top - 1];
// 해당 값을 삭제해 주고
this.top -= 1;
// 삭제된 값 이전의 값의 인덱스를 targeting 해주자
return result;
} // 삭제된 result 값을 반환해주자
JS에 미리 정의된 데이터 타입인 Array를 이용하면 간략하게 구현할 수 있다.
const stack = [];
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
console.log(stack); // [1, 2, 3, 4, 5]
stack.pop(); // 5
stack.pop(); // 4
console.log(stack); // [1, 2, 3]
Author And Source
이 문제에 관하여(Stack & Queue 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sashainspb/Stack-Queue-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)