etc/Today, I Learned

스택(Stack) & 큐(Queue)

yusung_ 2023. 1. 5. 15:54

1. 스택 (Stack)

스택(stack)이란 쌓아 올린다는 것을 의미한다.

따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다.

 

📌스택의 특징

 

스택은 위의 사진처럼 같은 구조와 크기의 자료 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다.

 

top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다.

 

스택에서 자료를 삭제할 때도 top을 통해서만 가능하다.

스택에서 top을 통해 삽입하는 연산 'push' , top을 통한 삭제하는 연산 'pop'이라고 한다.

 

따라서 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다

구조적 특징을 가지게 된다. 이러한 스택의 구조를 후입선출(LIFO, Last-In-First-Out) 구조이라고 한다.

 

 

2. 큐 (Queue)

Queue 의 사전적 의미는 1. (무엇을 기다리는 사람, 자동차 등의)  , 혹은 줄을 서서 기다리는 것을 의미한다.

따라서 일상생활에서 놀이동산에서 줄을 서서 기다리는 것, 은행에서 먼저 온 사람의 업무를 창구에서 처리하는 것과 같이

선입선출(FIFO, First in first out) 방식의 자료구조를 말한다.

 

 

📌 큐의 특징

 

정해진 한 곳(top)을 통해서 삽입, 삭제가 이루어지는 스택과는 달리 큐는 한쪽 끝에서 삽입 작업이, 다른 쪽 끝에서 삭제 작업이 양쪽으로 이루어진다.

 

이때 삭제연산만 수행되는 곳을 프론트(front), 삽입연산만 이루어지는 곳을 리어(rear)로 정하여 각각의 연산작업만 수행된다. 이때, 큐의 리어에서 이루어지는 삽입연산을 인큐(enQueue) 프론트에서 이루어지는 삭제연산을 디큐(dnQueue)라고 부른다.

'etc > Today, I Learned' 카테고리의 다른 글

캐시(Cache)와 쿠키(Cookie)  (0) 2023.03.03
싱글톤(Singleton) 패턴이란?  (0) 2023.01.10
JVM 구조와 JAVA의 동작 원리  (0) 2023.01.10
DI & IoC  (0) 2023.01.04
@Transactional  (0) 2022.12.14