[자료구조]스택(Stack)과 큐(Queue)

전유덕·2023년 12월 20일
0
post-thumbnail

개요

스택과 큐는 데이터를 구성할 때 사용되는 선형 데이터 구조로 필요할 때 구조에서 순차적으로 요소를 저장하고 검색합니다. 차이점이라면 스택은 LIFO(Last In First Out)순서에 따라 요소를 저장하고 큐는 FIFO(First In First Out)순서에 따라 요소를 메모리에 저장하는데요. 아래에서 조금 더 자세히 알아보겠습니다.

스택(Stack)

개념

스택은 Top 이라고 하는 목록의 한쪽에서만 요소를 삽입하고 삭제할 수 있는 선형 데이터 구조입니다. 스택은 LIFO (Last In First Out) 원칙을 따릅니다. 즉, 마지막에 삽입된 요소가 가장 먼저 나오는 요소입니다. 스택에 요소를 삽입하는 것을 푸시(Push) 작업이라고 하며, 스택에서 요소를 삭제하는 것을 팝(Pop) 작업이라고 합니다. 스택에서는 항상 top 이라는 포인터를 사용하여 목록에 있는 마지막 요소를 추적합니다.

활용

웹브라우저를 사용하다보면 뒤로가기 기능을 사용할 때가 있죠?
이 때 사용되는 게 스택구조입니다. 가장 마지막에 있던 데이터가 가장 먼저 제거되는 것이죠.
뒤로가기를 계속한다면 마지막에는 가장 처음 진입한 페이지에 도달하게 됩니다.

큐(Queue)

개념

큐는 목록의 한 쪽인 Rear 에서만 요소를 삽입할 수 있고, Front 라고 하는 다른 쪽에서만 요소를 삭제할 수 있는 선형 데이터 구조입니다 . 큐 데이터 구조는 FIFO (선입선출) 원칙을 따릅니다. 즉, 목록의 맨 처음에 삽입된 요소가 목록에서 가장 먼저 제거되는 요소입니다. 큐에 요소를 삽입하는 것을 enqueue 작업이라고 하며, 요소를 삭제하는 것을 dequeue 작업이라고 합니다. 큐에서는 항상 두 개의 포인터를 유지합니다. 하나는 첫 번째에 삽입되어 여전히 목록에 있는 요소를 가리키며 , 두 번째 포인터는 뒷 포인터 로 마지막에 삽입된 요소를 가리킵니다.

활용

혹시 게임을 좋아하시나요?
온라인대전게임을 하다보면 '큐를 돌린다' 혹은 '큐를 잡다'라는 표현을 사용하는데요. 이 때의 사용되는 개념이 바로 설명했던 큐(Queue)입니다.
유저들이 대전을 위해 대전신청을 하면 큐 작업리스트에 등록되고 등록한 순서대로 매칭이 되는 것입니다.

profile
zi존 개발자 되고싶다ㅏㅏ(훈수 대환영!)

0개의 댓글