엄코딩의 개발 일지

알고리즘을 공부하면서 스택과 큐의 다시 학습해보았다.


1. 스택(Stack)


Stack는 후입선출(LIFO : Last In First Out)로, 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.

스택(Stack)을 응용한 대표적인 예가 JVM 스택 메모리이다. 스택 메모리에 저장된 변수는 나중에 저장된 것부터 제거된다. 



Stack 인터페이스에 정의되어 있는 메소드는 다음과 같다.



Java에서 스택(Stack) 객체를 생성하기 위해서는 저장할 객체 타입을 파라미터로 표기하고 기본 생성자를 호출하면 된다.


Stack<String> stack = new Stack<String>(); 와 같은 형식이다.

다음은 Stack을 공부하는데에 참고 했던 책의 Stack 예제이다.

생각하기 쉽게 택시에 있는 동전케이스를 생각해보자.




동전 클래스)








스택을 이용한 동전케이스)




실행 결과에서 제일 나중에 push하였던 150이 제일먼저 pop되어 나오는것을 볼 수 있다. 







2. 큐(Queue)



Queue는 선입선출(FIFO : First In First Out)이며, 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.

큐(Queue)를 응용한 대표적인 예가 스레드풀(ExecutorService)의 작업 큐이다. 작업 큐는 먼저 들어온 작업부터 처리한다.


Queue 인터페이스에 정의되어 있는 메소드는 다음과 같다.



Queue 인터페이스를 구현한 대표적인 클래스에는 LinkedList가 있다. LinkedList는 List 인터페이스를 구현했기 때문에 List 컬렉션이기도 하다. 다음 코드는 LinkedList 객체를 Queue 인터페이스 타입으로 변환한 것이다.



다음은 Queue에 대한 예제 소스이다.














[자료 출처 & 참고 문헌]


이것이 자바다