Programming Language/JavaScript
Javascript Implementation Stack
Yongari
2022. 12. 12. 00:00
사용한 개념
스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다.
실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.
멤버 변수
- 데이터를 저장할 Object 타입의 storage
- 마지막에 들어온 데이터를 가리키는 Number 타입의 포인터 top
메서드
- size(): 스택에 추가된 데이터의 크기를 리턴해야 합니다.
- push(): 스택에 데이터를 추가할 수 있어야 합니다.
- pop(): 가장 나중에 추가된 데이터를 스택에서 삭제하고 삭제한 데이터를 리턴해야 합니다.
사용 예시
const stack = new Stack();
stack.size(); // 0
for(let i = 1; i < 10; i++) {
stack.push(i);
}
stack.pop(); // 9
stack.pop(); // 8
stack.size(); // 7
stack.push(8);
stack.size(); // 8
풀이코드 설명
class Stack {
constructor() {
this.storage = {}; //storage 초기화
this.top = 0; // 스택의 가장 상단을 가리키는 포인터 변수를 초기화 합니다.
}
size() {
return this.top; //size를 반환
}
//스택의 포인터변수 위치에 엘리먼트 지정
// 엘리먼트 추가시 인덱스? 포인터 변수값도 추가
push(element) {
this.storage[this.top] = element;
this.top += 1;
}
// 가장 나중에 추가된 데이터가 가장 먼저 추출되어야 함
// 후입선출, 사이즈를 체크한 후 0이하면 return
// 스토리지 인덱스, 포인터변수에서 -1을 적용
pop() {
// 빈 스택에 pop 연산을 적용해도 에러가 발생하지 않아야 합니다
if(this.size() <= 0 ) {
return;
}
const result = this.storage[this.top -1];
delete this.storage[this.top -1];
this.top -= 1;
return result;
}
}
사용한 개념
스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다.
실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.