스택은 쌓는다는 의미를 가지고 있는 단어다. 자료 구조 중 선형 구조의 한 종류이며 말 그대로 자료를 쌓는 구조이다.
스택의 특징중 하나는 후입선출 이라는 것, 나중에 들어온 것이 먼저 나간다. 배드민턴 셔틀콕 통이 좋은 예다. 셔틀콕 통의 뚜껑을 열면 제일 위에 있는 셔틀콕을 쓰고 다시 넣어놓고 이런식으로 위에 있는 것(나중에 넣은 것)부터 사용하게 된다.
자바스크립트로 스택을 구현할때 주의할점은 후입선출을 지키는 것 뿐이다. class 문법으로도 가능하지만, 구현의 편의성을 생각하면 배열로 구현하는 것이 가장 편하다. 후입선출을 구현하기 위해선 배열의 메소드를 활용하면 된다.
음악 재생 목록을 queue라고 부른다. queue를 따라서 음악이 순차적으로 재생된다.(셔플을 하지 않았을때를 가정하자) 스택과 마찬가지로 자료 구조 중 선형 구조의 한 종류이다.
큐의 특징은 선입선출이다. 편의점 알바를 할때 정말 많이 듣는 단어 선입선출... 먼저 들어온게 먼저 나간다.
Queue도 배열로 구현이 가능하다. 선입선출을 지켜 구현하기만 하면 된다.
잘 생각해보면 배열에서 구현할 경우 큐가 진행되면서 인덱스가 점점 증가하거나 감소하는 방향으로 움직이게 된다. 인덱스가 음수가 될 수 는 없으므로 큐의 길이 만큼 계속해서 인덱스가 재 지정되게 되는데 이는 원본 자료를 변형하는 결과로 이어진다.
이런 문제를 해결할 수 있는 방법으로 원형큐나 우선순위 큐가 있다.