(TIL)Stack, Queue

in63119·2020년 12월 3일
2

TIL

목록 보기
8/19

20년12월3일 Stack, Queue를 배우다.

컴퓨터 공학에서 중요하게 다뤄지는 데이터 자료 구조는
어떠한 프로그램을 구현하거나 알고리즘 문제를 해결하거나 새로운 로직을 만들어야할 때 중요하다.

그 중 오늘은 Stack 과 Queue를 알아보겠다.

Stack

Stack은 자료를 블록 쌓듯이 추가하는 형태의 자료구조이다.

자료를 추가할 때는 항상 스택의 맨 위에 자료를 push하면 되고, 자료를 삭제할 때는 역시나 맨 위에 자료를 pop시켜준다.
(LIFO: last in, first out)
이 그림처럼 위에서부터 차례대로 자료가 쌓이기 때문에 제거할 때는 마지막 자료가 먼저 제거된다.

Stack이 실생활에서 자주 쓰이는 Undo/Redo : Ctrl(Command) + Z / Ctrl(Command) + Alt(Shift) + Z를 생각하면 더 이해가 쉽다.

또한 Stack은 호출 스텍(Call Stack). 즉, 재귀함수를 사용할 때도 중요하게 다뤄진다.

Queue

Queue는 자료의 한 쪽에서만 추가,제거 되는 Stack과는 다르게 한 쪽에서 추가되고, 그 반대쪽에서 제거되는 자료구조이다.

(enqueue)자료를 추가할때는 Queue의 뒤쪽에 추가,
(dequeue)자료를 삭제할때는 Queue의 앞쪽에서 삭제를 한다.
(FIFO: first in, first out)

이 그림처럼 Stack과는 다르게 먼저 들어간 요소가 가장 먼저 빠져나온다. 마치 맥도날드or스타벅스의 드라이브스루에서 먼저 들어가서 먼저 빠져나오는 느낌이라고 생각하자.

Stack & Queue 쉽게 구별하기

쉽게 생각해서 Stack과 Queue의 구조만 구별하면 쉽게 느껴진다.

Stack은 문이 1개 밖에 없는 고속버스
Queue는 문이 2개 있는 시내버스

그림으로 비교하면?

1개의 댓글

comment-user-thumbnail
2020년 12월 15일

Hello, I enjoy reading all of your article. I like to write a little comment to support you.JOKER123

답글 달기