Stack 자료구조 설명
- 데이터를 순서대로 쌓는 자료구조이며, 입력과 출력이 하나의 방향으로 제한되어 이루어짐
- LIFO(Last In First Out) : 가장 나중에 들어간 데이터는 가장 먼저 나올 수 있음
- FILO(First In Last Out) : 가장 먼저 들어간 데이터는 가장 나중에 나올 수 있음
코드 작성 포인트
1. Stack에 자료를 담기 위한 위한 객체나 배열을 변수로 선언하기
2. Stack이 배열이라면 push/pop, shift/unshift를 통해 자료를 추가하고 빼기
3. 가장 마지막에 들어온 자료 또는 새로 들어올 자료의 인덱스를 top으로 표현
Stack 구현 코드 (JavaScript)
// Stack을 생성하기 위한 class 정의하기
class Stack {
//stack constructor를 생성
constructor() {
this.storage = {};
this.top = 0;
}
// stack의 사이즈 구하기
size() {
return this.top;
}
// this.top은 스택에 새롭게 추가될 요소의 인덱스를 나타내며, 하나씩 증가하기 때문에 size를 표현
//stack에 element를 추가
push(element) {
this.storage[this.top] = element;
this.top += 1;
}
// this.top을 키로, 요소를 값으로 하여 storage에 할당
// stack에서 element를 제거한 뒤 해당 element를 반환
pop() {
if (this.size() <= 0) { // size가 0이라면 아무 일도 일어나지 않음
return;
}
const result = this.storage[this.top - 1];
delete this.storage[this.top - 1];
this.top -= 1;
return result;
}
// top-1로 최상단을 리턴하며 스택에서 삭제. 하나를 제거했으니 top도 감소
}
반응형
'프로그래밍 > 알고리즘, 프로그래밍 언어' 카테고리의 다른 글
[알고리즘] 인접행렬(adjacency matrix) 구현 (JavaScript) (0) | 2021.08.10 |
---|---|
[알고리즘] Tree 자료구조 구현 (JavaScript) (0) | 2021.07.29 |
[알고리즘] Queue로 포장을 마치고 나가는 인원 수 구하기 (0) | 2021.07.27 |
[알고리즘] Queue 자료구조 JavaScript로 구현 (0) | 2021.07.27 |
[알고리즘] Stack으로 브라우저 '뒤로 가기' '앞으로 가기' 구현 (0) | 2021.07.27 |
댓글