자료 입출력이 한방향에서만 이뤄지는 자료구조로 가장 마지막에 입력한 데이터를 꺼내는 후입선출(Last in First Out) 형태를 띄고있다.
속도가 빠르다는 장점을 가지고 있다.
긴 원통에 담긴 프링글스를 먹는 방법과 같다!
공장에서 맨 마지막에 들어간 감자칩은 제일 먼저 먹힌다!! 🥔
주의 ) 스택은 추상적 자료구조 이므로 자료 자체의 형태와 그 자료와 관계된 연산들을 수학적으로만 정의한 것을 의미하며 구현 세부사항은 정의하지 않는다.
즉, 후입선출의 형태만 갖춘다면 무엇이든 '스택'이라고 부를수 있다.
(시간 복잡도는 데이터의 개수가 증가함에 따라 알고리즘 규모가 얼마나 커지는지 알려준다.)
삽입 | O(1) |
---|---|
삭제 | O(1) |
탐색 | O(n) |
function Stack(max_size){
//배열 사이즈 지정
const size = max_size;
//맨 위에 값 지정
let top = 0;
let array = [];
return{
// 제일 위 데이터 제거
pop(){
if(top==0){
console.log("stack is empty");
}else{
let temp = array[top];
top--;
return temp;
}
},
push(item){
if(size > top){
top++;
return array[top] = item;
}else{
console.log(new Error("stack is full"));
}
},
peek(){
return array[top];
}
}
}
var a = Stack(5);
///결과
var a = Stack(5);
a.push(1);
a.push(2);
a.push(3);
a.push(4);
a.push(5);
console.log(a.pop()); // 5
console.log(a.peek()); // 4