나중에 넣은 데이터가 먼저 나오는 LIFO(Last In First Out) 기반의 선형 자료 구조
function Stack(array) {
this.array = array ? array : [];
}
Stack.prototype.getBuffer = function() {
// slice: 어떤 배열의 시작부터 끝까지 얕은 복사본을 새로운 객체로 반환한다.
return this.array.slice();
}
Stack.prototype.isEmpty = function() {
return this.array.length === 0;
}
array에 내장되어 있는 메서드를 사용해서 구현했다.
Stack.prototype.push = function(element) {
return this.array.push(element);
}
array에 내장되어 있는 메서드를 사용해서 구현했다.
Stack.prototype.pop = function() {
return this.array.pop();
}
array의 가장 마지막 데이터이기 때문에, length - 1의 값을 반환한다.
Stack.prototype.peek = function() {
return this.array[this.array.length - 1];
}
Stack.prototype.size = function() {
return this.array.length;
}
position값을 정해줬을 경우, position부터 찾고자 하는 데이터를 찾으며, 그렇지 않을 경우 처음부터 데이터를 찾는다.
찾는 값이 없을 경우 -1을 리턴한다.
Stack.prototype.indexOf = function(element, position = 0) {
for (let i = position; i < this.array.length; i++) {
if (element === this.array[i]) return i;
}
return -1;
}
위의 indexOf와 똑같지만, 존재 여부에 대해 true/false의 리턴값이 다르다.
리턴값이 boolean이다.
Stack.prototype.includes = function(element, position = 0) {
for (let i = position; i < this.array.length; i++) {
if (element === this.array[i]) return true;
}
return false;
}
관련 전체 코드는 Git에 업로드 해두었습니다.
Github_Stack