coding

스택과 큐,덱(Deque) ( Java ) 알아보기

하루우울루 2023. 2. 23. 23:47

스택, 큐, 데큐를 공부하면서 알아간 것들과 기억할만한 것들을 정리해보려고 한다.

 

먼저, 스택이란 나중에 들어간 데이터가 가장 먼저 나온다는 특징을 가진 자료구조이다.

 

<스택의 저장과 삭제 모습>

위의 그림을 보면 스택의 push()와 pop() 메서드를 통해 스택의 저장공간에 데이터 요소들을 저장하고 삭제하는 모습이다.

pop()을 사용해서 데이터 요소를 제거할 때 가장 최근에 저장되었던 45가 제거되는 모습이다.

 

<스택의 대표적인 메소드들>

위의 사진은 스택에서 자주 사용하는 메소드들이다. 

보다시피 pop()을 사용해서 데이터를 제거할 때 배열의 특정 원소를 제거하는 것처럼 원하는 요소를 제거할 수는 없다.

pop()을 사용하면 무조건 가장 최상단의 요소값이 제거된다는 점을 기억해야겠다.

 

<정수형 스택 선언>

정수형으로 스택을 사용하고자 할 때에는 위와 같이 선언하면 된다.

 


다음으로는 큐와 덱이다.

큐는 스택과 다르게(당연하게도)  먼저 들어온 데이터가 먼저 삭제되는 구조이다.

 

<큐의 저장과 삭제의 모습>

위의 그림을 보면 데이터가 들어온 순서대로 저장되고 삭제도 들어온 순서대로 쭉쭉 삭제가 되는 모습이다.

일상생활에서 줄을 서는것과 같다고 이해하면 쉽다.

 

덱은 스택과 큐의 개념을 같이한다라고 이해하면 쉬울 수 있다.

덱이란 Deque를 덱이라고 부르는 것인데, 큐의 개념에서 데이터의 저장을 앞, 뒤로 사용자가 원하는 곳에 저장할 수 있다.

물론, 삭제도 앞,뒤로 접근해서 삭제가 가능하다.

<정수형 큐 선언>
<정수형 덱 선언>

 

<큐,덱의 메소드들>

큐와 덱에서 입력을 offer 또는 add를 사용하고 삭제도 poll 또는 remove를 사용한다.

이때,  Deque를 사용한다면 offerFirst 또는 offerLast를 통해 데이터를 앞, 뒤로 저장할 수 있다.

 

마찬가지로, pollFirst 또는 pollLast를 통해서 데이터를 앞,뒤로 삭제할 수 도 있다.

사용자는 자신이 원하는 방식으로 덱을 이용해서 코드를 작성할 수 있을 것이다.

 

공부하면서 자주 볼 수 있도록 글을 작성해 보았다.