Programming/자바(Java)

11- 15 Stack & Queue

먹보 개발자 2024. 10. 14. 00:43

스택: LIFO구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다. (배열로 구현하는게 유리함)

밑이 막힌 상자

 

큐(Queue): FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다. (링크드 리스트로 구현하는게 유리함)

양끝이 뚤린 상자

 

스택과 큐(Stack & Queue)의 메서드

 

Stack (Stack st = new Stack();)

메서드 설명
boolean empty() stack이 비어있는지 알려준다
Object peek() Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않음.(비었을 때는 EmptyStackException발생)
Object pop(Obeject item) Stack의 맨 위에 저장된 객체를 꺼낸다. (비었을 때는 EmptyStackException발생)
Object push(Object item) Stack에 객체(item)를 저장한다.
int search(Object o) Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환. 못찾으면 -1을 반환.
(배열과 달리 위치는 0이 아닌 1부터 시작)

 

Queue (인터페이스로 정의되어있음.)

메서드 설 명
boolean add(Object o) 지정된 객체를 Queue에 추가한다. 성공하면 true를 반환. 저장공간이 부족하면 IllegalStateException발생
Object remove() Queue에서 객체를 꺼내 반환. 비어있으면 NoSuchElementException발생
Object element() 삭제없이 요소를 읽어온다. peek와 달리 Queue가 비었을 때 NoSuchElementException발생
boolean offer(Object o) Queue에 객체를 저장. 성공하면 true. 실패하면 false를 반환
Object poll() Queue에서 객체를 꺼내서 반환. 비어있으면 null을 반환
Object peek() 삭제없이 요소를 읽어 온다. Queue가 비어있으면 null을 반환

 

Queue에 기능을 갖고 있는 객체를 쓰고싶다면

1. Queue를 직접 구현한다.

2. Queue를 구현한 클래스를 사용한다. 

자바 API문서에서 찾은 Queue

 

스택과 큐(Stack & Queue)의 활용

스택 활용 예 - 수식 계산, 수식괄호검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로

큐의 활용 예 - 최근사용문서, 인쇄작업 대기목록, 버퍼(buffer)

'Programming > 자바(Java)' 카테고리의 다른 글

11-25 Arrays  (0) 2024.10.14
11-22 Iterator, ListIterator, Enumeration  (5) 2024.10.14
11-12 LinkedList / ArrayList, LinkedList 비교  (1) 2024.10.13
11-7 ArrayList  (0) 2024.10.11
11-1 컬렉션 프레임웍  (1) 2024.10.11