컴퓨터 공학에서 중요하게 다뤄지는 데이터 자료 구조는
어떠한 프로그램을 구현하거나 알고리즘 문제를 해결하거나 새로운 로직을 만들어야할 때 중요하다.
그 중 오늘은 Stack 과 Queue를 알아보겠다.
Stack은 자료를 블록 쌓듯이 추가하는 형태의 자료구조이다.
자료를 추가할 때는 항상 스택의 맨 위에 자료를 push하면 되고, 자료를 삭제할 때는 역시나 맨 위에 자료를 pop시켜준다.
(LIFO: last in, first out)
이 그림처럼 위에서부터 차례대로 자료가 쌓이기 때문에 제거할 때는 마지막 자료가 먼저 제거된다.
Stack이 실생활에서 자주 쓰이는 Undo/Redo : Ctrl(Command) + Z / Ctrl(Command) + Alt(Shift) + Z를 생각하면 더 이해가 쉽다.
또한 Stack은 호출 스텍(Call Stack). 즉, 재귀함수를 사용할 때도 중요하게 다뤄진다.
Queue는 자료의 한 쪽에서만 추가,제거 되는 Stack과는 다르게 한 쪽에서 추가되고, 그 반대쪽에서 제거되는 자료구조이다.
(enqueue)자료를 추가할때는 Queue의 뒤쪽에 추가,
(dequeue)자료를 삭제할때는 Queue의 앞쪽에서 삭제를 한다.
(FIFO: first in, first out)
이 그림처럼 Stack과는 다르게 먼저 들어간 요소가 가장 먼저 빠져나온다. 마치 맥도날드or스타벅스의 드라이브스루에서 먼저 들어가서 먼저 빠져나오는 느낌이라고 생각하자.
쉽게 생각해서 Stack과 Queue의 구조만 구별하면 쉽게 느껴진다.
Stack은 문이 1개 밖에 없는 고속버스
Queue는 문이 2개 있는 시내버스
그림으로 비교하면?
Hello, I enjoy reading all of your article. I like to write a little comment to support you.JOKER123