스택이란?
스택(stack)은 말 그대로 '쌓아놓은 더미'를 뜻한다.
먼저 들어간 데이터가 나중에 나오는 규칙. First In Last Out = Last In First Out = LIFO
연결리스트로 스텍 구현하려면 삽입시도 헤드에 삭제시도 헤드를 삭제하면 됨. 한쪽으로만 데이터 삽입 및 삭제하면 됨.
import { LinkedList } from './LinkedList.mjs';
class Stack{
constructor(){
this.list = new LinkedList();
}
//데이터 삽입
push(data){
//항상 맨 처음에 삽입
this.list.insertAt(0, data);
}
//데이터 추출
pop(){
try{
//항상 맨 처음 노드를 삭제
return this.list.deleteAt(0);
} catch(e){
//index 범위를 넘어가면 오류가 발생하니까 null을 리턴
return null;
}
}
//가장 위에 있는 데이터 가져오기
peek(){
return this.list.getNodeAt(0);
}
//스택이 비었는지 확인. count의 개수가 0이면 빈것.
isEmpty(){
return (this.list.count == 0);
}
}
export { Stack };