스택
스택은 데이터(data)를 순서대로 쌓는 자료구조로 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근에 있다. 이런 스택 자료구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)라 부르기도 한다.
[그림] 스택의 구조
스택 관련 메소드
- push() : push를 이용하여 해당 stack의 top에 데이터를 추가한다.
- pop() : pop을 이용하여 가장 나중에 추가된 데이터가 가장 먼저 추출한다.
스택의 실 사용 예
실 사용의 대표적인 예로 우리가 자주 사용하는 브라우저의 뒤로 가기, 앞으로 가기 기능을 구현할 때 자료구조 Stack이 활용된다.
[그림] 스택의 실사용 예(브라우저의 앞으로가기, 뒤로가기)
출처 : Codestates
브라우저에서 자료구조 Stack이 사용될 때 동작 순서
- 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관한다
- 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때에는, 현재 페이지를 Next Stack에 보관하고 Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져온다
- 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다
- 마지막으로 현재 페이지를 Prev Stack에 보관한다
큐
자료구조 큐는 스택과 반대되는 개념으로 먼저 들어간 데이터가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out) 을 특징으로 가지고 있다. 이런 특징을 따라 큐는 데이터가 입력된 순서대로 처리할 때 주로 사용한다.
[그림] 큐의 구조
큐 관련 메소드
- push() 또는 unshift() : 큐의 rear에 데이터를 추가한다.
- pop() 또는 shift() : 큐의 front에 있는 데이터를 출력한다.
큐의 실 사용 예
[그림] 큐의 실사용 예(프린터의 인쇄작업 순서)
출처 : Codestates
큐의 동작 순서
- 큐의 rear에 데이터가 추가된다.
- 추가된 데이터가 front로 이동한다.
- 큐의 사이즈에 따라 다음 데이터가 rear에 추가된다.
- front에 있는 데이터가 출력된다.
오랜만에 보는 스택과 큐네요.... 섹션2에서 또 보는군요...