스택과 큐(Stack&Queue)
- 스택(Stack): LIFO구조. 마지막에 저장된 것을 제일 먼저 꺼냄
- 큐(Queue): FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼냄
스택 메서드
메서드 | 설명 |
---|---|
boolean empty() |
Stack이 비어있는지 알려줌 |
Object peek() |
Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않음 |
Object pop() |
Stack의 맨 위에 저장된 객체를 꺼냄 |
Object push(Object item) |
Stack에 객체(item)을 저장 |
int search(Object o) | Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환, 못찾으면 -1을 반환(배열과 달리 위치는 0이 아닌 1부터 시작) |
큐 메서드
메서드 | 설명 |
---|---|
boolean add(Object o) | 지정된 객체를 Queue에 추가. 성공하면 true를 반환. |
Object remove() | Queue에서 객체를 꺼내 반환. |
Object element() | 삭제없이 요소를 읽어옴 peek과 달리 Queue가 비어있을 때 NoSuchElementException발생 |
boolean offer(Object o) | Queue에 객체를 저장. 성공하면 true. 실패하면 false |
object poll() | Queue에서 객체를 꺼내서 반환 |
Object peek() | 삭제없이 요소를 읽어옴 |
- Queue는 인터페이스로 되어 있어서 객체생성이 안됨
1 | Queue q = new LinkedList(); |
예제
스택과 큐의 활용
- 스택의 활용 예 - 수식계싼, 수식괄호검사, 워드프로세스의 undo/redo, 웹브라우저의 뒤로/앞으로
- 큐의 활용 예 - 최근사용문서, 인쇄작업 대기목록