[자료구조] Stack 과 Queue

MihyunCho·2021년 4월 14일
0
post-thumbnail

Stack

스택이란 무엇인가 ? 친근한 네이버에 물어보자

사전에 Stack은 무더기더미, 쌓다, 포개다, 채우다 등 으로
어떤곳에 어떤것이 쌓이는 거구나! 라는 걸 알 수 있다.

stack : 자료(data)를 쌓는 자료구조

쉽게 생각하자면 Stack은 내가 좋아하는 회전초밥집에서 먹고 쌓아올린 빈 접시와 같은 모양이라는 것이다😀

(내가 좋아하는 현희언니. 역시 먹잘알❤️)

초밥을 먹고나서 빈 접시를 순서대로 위로 쌓다보면 저렇게 높이 쌓이고, 계산할 때 점원분께서 위에서부터 접시를 빼며 계산을 하신다고 생각하면 스택에 대한 이해가 쉬워진다.
Stack 자료구조의 특성은 입출이 하나인 제한적 접근에 있다.
이런 Stack 자료구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)이라고 한다.

Stack의 실사용 예제

우리가 자주 사용하는 브라우저에서 뒤로 가기, 앞으로 가기 기능을 구현할 때 Stack 자료구조가 활용된다.

1. 새로운 페이지로 접속할 때 현재 페이지를 Prev Stack에 보관합니다.
2. 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때는 현재 페이지를 Next Stack에 보관하고 
   Prev Stack에 가장 나중에 보관된 페이지를 현재 페이로 가져옵니다.
3. 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때는 Next Stack의 
  가장 마지막으로 보관된 페이지를 가져옵니다.
4. 마지막으로 현재 페이지를 Prev Stack에 보관합니다.

Queue

큐란 무엇인가? 나는 당구 큐밖에 모르는데😫
이제 부터 알면된다!

Queue란 대기행렬, 줄, 줄을 서서 기다리다 등 으로
어떤곳에 차례대로 들어와 줄을 서고, 차례를 기다리는 구나! 라는 것을 알 수 있다

Queue : 리스트의 한쪽 끝에서는 data가 삭제되고 반대쪽 끝에서는 data의 삽입만 가능하게 만든 순서화된 자료구조

쉽게 말하면 입구랑 출구가 다른거다!
먹는것과 배출하는 것..😳 (입과 x꾸멍)

Queue를 구글에 쳐보니 관련 이미지로 이런 비슷한 이미지들이 많이 떴다.
출근 시간대 버스나 지하철을 기다리는 직장인들의 모습이 아닌가!!! 괜히 숙연해진다..😢

대중교통을 이용하기 위해서는 대중교통 줄서는 곳으로 가서 차례대로 줄을 서서 기다려야하고, 대중교통의 문으로 줄의 앞에서부터 차례대로 탑승(줄에서 빠져나오는 것을 의미)해야 한다.
Queue는 들어온 곳으로 나갈 수 없고 반대쪽으로만 나가야 한다.
출근시간에 사람 빽빽한 탑승대기 라인에서 들어온 곳으로 빠져나가려면 엄청난 민폐와 부끄러움과 고난과 역경이 있는 것 처럼.. Queue는 한번 들어오면 반대쪽 출구로 나가는 수 밖에 없다😞

Queue의 실사용 예제

컴퓨터와 연결된 프린터에서 문서를 인쇄할 때 로직이 Queue의 방식으로 흘러간다.

1. 우리가 문서를 작성하고 출력 버튼을 누르면 해당 문서는 인쇄 작업 (임시 기억 장치)Queue에 들어갑니다.
2. 프린터는 인쇄 작업 Queue로 들어온 순서대로 문서를 인쇄합니다.

> 컴퓨터(출력 버튼) - Queue(임시 기억 장치)에 하나씩 들어옴 - 들어온 순서부터 인쇄 작업

만약 회의시간이 5분 남았는데 인쇄한 회의자료들이 순서대로 출력이 안된다면 인쇄물이 뒤죽박죽 섞여서, 늦었다고 대리님한테 혼나고, 속상해서 술한잔하고, 알콜을 자주 섭취하게되면 탈모까지 올 것이다 😫
즉, Queue처럼 프린터가 작동하지 않는다면 난 탈모인이 될 것이다 🤬

Queue의 구조는 우리의 실생활에서 많이 찾아볼 수 있기 때문에 구글링 해보면 더 쉽게 이해갈만한 문서들이 많다.
참고해서 완벽하게 이해하도록 해야겠다!

profile
Sic Parvis Magna 🧩

0개의 댓글