20231229_Queue, Stack

2023. 12. 29. 19:57IT/TIL

오늘의 TIL은 자료구조 중에서 다양하게 활용되는 Queue, Stack에 대한 내용이다.

 

우선 TIL의 내용을 시작하기 전에 데이터를 찾으면서 발견한 사이트인데

 

https://www.csharpstudy.com/

 

기초적인 내용이 잘 정리되어 있는 것 같아, 이번 연휴에 이곳을 통해 공부할 예정이다.

 

Queue(큐)

우선 Queue에 대해 살펴보면 Queue(큐)는 먼저 추가된 데이터가 먼저 출력되는 자료 구조(선입선출)로써 입력된 순서대로 처리해야하는 상황에 사용된다. Queue는 맨 뒤(tail)에 데이터를 계속 추가하고, 맨 앞(head)에서만 데이터를 출력하기 때문에 순차적으로 데이터를 처리하게 된다.

 

간단하게 생각하면 Queue는 입장 줄을 서는 시스템이라고 생각하면 되는데,

먼저 줄에 선 사람이 먼저 입장하는 것처럼, 들어온 순서대로 처리하는 경우에 사용할 수 있다.

 

위에 이미지처럼 Queue에 데이터를 추가하는 경우에는 queue.Enqueue();로,

제거하는 경우에는 queue.Dequeue();로 데이터를 추가하고 제거할 수 있다.

 

 

이 Queue에서 Dequeue를 하면 먼저 들어온 1이 나오게되고, 전체 길이가 4로 줄며 다음의 Dequeue 순서는 2가 된다.

 

Stack(스택)

Stack에 대해 살펴보면 Stack(스택)은 먼저 추가된 데이터가 가장 나중에 출력되는 자료 구조(선입후출)로써 입력된 순서대로 처리해야하는 상황에 사용된다. Stack은 Queue와는 한 쪽이 막히고 다른 한 쪽만 뚫려있는 구조로 되어 있다.

 

간단하게 생각하면 봉에 링을 쌓는 게임을 생각해볼 수 있는데,

아래의 그림처럼 마지막에 넣은 링을 처음으로 처리하는 경우에 사용할 수 있다.

 

Queue에서 Enqueue와 Dequeue를 사용한 것과 달리

데이터를 stack.push();하는 것으로 입력하고 stack.pop();하는 것으로 출력할 수 있다.

 

 

이 Stack에서 Pop을 하면 마지막에 들어온 5가 나오게되고, 전체 길이가 4로 줄며 다음의 Pop 순서는 4가 된다.

 

 

오늘은 스탠다드 특강에서 자료구조 중의 Stack과 Queue에 대해 공부하였는데,

그 과정에서 배웠던 내용들을 조금 더 자세하게 공부하면서 기록하게 되었다.

 

이 외에도 이를 이용한 DFS와 BFS를 공부하였는데,

TIL을 통해 정리하고자 하였는데 정확하게 개념이 정리되지 않아

추후에 TIL을 작성하면서 정리하려고 한다.

'IT > TIL' 카테고리의 다른 글

20240103_맵 만들기  (0) 2024.01.04
20240102_유니티 미니맵  (0) 2024.01.02
20231228_Coroutine  (0) 2023.12.28
20231227_IPointer Interface  (0) 2023.12.27
20231226_달리기 경주(프로그래머스)  (0) 2023.12.26