스택은 후입선출 LIFO(Last In First Out)구조로 나중에 넣은 데이터가 가장 먼저 나오는 자료구조이다.
보통은 스택의 가장 위에 있는 데이터만 확인하거나 삭제할 수 있다.
구현에 따라 맨 위에 위치하지 않은 데이터도 확인할 수 있게 작성할 수 있겠지만 대체로 가장 위에 있는 데이터만 확인 및 삭제하도록 되어있다.
구현 사항
- isEmpty() : 비어있는지 확인(반환값 t/f)
- push(data) : 스택에 데이터 추가하기
- pop() : 스택 맨 위의 데이터 삭제하기
- top() : 스택 맨 위의 데이터 확인하기
- size() : 스택의 데이터 개수 출력
스택은 배열로 구현할 수 있다.
function Stack(arr = Array()) {
this.arr = arr;
}
let stk = new Stack();
let stk2 = new Stack(['test', 'test2']);
스택이 비어있는지 확인하는 메서드
Stack.prototype.isEmpty = function(){
return this.arr.length === 0;
}
현재 배열의 길이가 0인 경우 비어있음을 의미한다
스택에 데이터 추가하기
Stack.prototype.push = function (data) {
this.arr.push(data);
};
스택 가장 위쪽 데이터 삭제하기
Stack.prototype.pop = function () {
return this.arr.pop();
};
스택에 맨 위에 위치한 데이터 출력하기
Stack.prototype.top = function () {
return this.arr.slice(-1);
};
스택의 사이즈 출력
Stack.prototype.size = function () {
return this.arr.length;
};
스택 테스트 해보기
let stk = new Stack();
stk.push(444);
console.log(stk.size());
console.log(stk.top());
console.log(stk.isEmpty());
console.log(stk.pop());
스택은 연결리스트 구현했을 때보다 훨씬 간단하고 쉬웠던 것 같다.
스택은 배열로 해결할 수 있는 부분이라 직접 구현해서 쓸 일이 있을지는 잘 모르겠다.