스택 구조를 이해하는데 가장 좋은 예시가 '감자칩 과자' 인거 같습니다.
(감자칩 과자 좋아하시나요? 저는 감자칩 과자 좋아하는데요😁 )
아래의 감자칩 과자가 공장에서 포장되는 과정을 생각해 보면, 우선 하단이 막힌 통에 감자칩 여러개가 순서대로 들어가고 다 차면 뚜껑을 덮겠죠.
편의점에서 이 감자칩 과자를 구매했고, 이제 먹어야 하는 상황을 이라면, 뚜껑을 열고 감자칩을 하나씩 꺼내서 먹어야 하죠
자! 감자칩 통의 맨 위에 있는 감자칩 하나를 생각해보면 공장에서 포장될때 가장 나중에 통에 들어가서 소비자가 구매해서 먹을때는 가장 먼저 감자칩 통에서 꺼내지죠
Stack구조가 이와 같습니다. 맨위에 있는 감자칩처럼 Stack은 마지막으로 저장한 데이터가 가장 먼저 읽힙니다. 이를 LIFO(Last In First Out)
라고 합니다.
Stack에서 데이터 저장은 push라고 합니다.
Stack에서 데이터를 읽는건 pop 이라고 하며, pop은 읽어들임과 동시에 stack에서 데이터를 삭제합니다.
제가 중학교, 고등학교 다닐때 점심시간에 밥 먹을려고 하면, 급식실가서 한줄로 줄을 섰는데요
이게 Queue를 이해하는데 가장 좋은 예시가 될거 같습니다.
4교시가 끝나면, 가장 먼저 뛰어가서 줄서는 학생이 가장 먼저 밥을 먹을수 있죠ㅋ
(항상 제 앞에서 새치기 하는 친구들은 살포시 잊어 줍시다.)
Queue는 가장 먼저 저장된 데이터가 가장 먼저 읽힙니다. 이를 FIFO(First In First Out)라고 합니다.
(일반적인 Queue 말고도 double ended queue, priority queue 등도 있지만, 나중에 공부하고 나서 내용 추가 하겠습니다;;)