스택과 큐는 원소들을 특정한 순서대로 삽입하고 제거할 수 있는 자료구조로 다음 연산들을 제공합니다.
스택은 LIFO(Last In First Out:후입선출)
로 나중에 넣은것이 먼저 나오는 자료 구조입니다.
자바에서는 내장 제네릭 클래스로 스택을 지원합니다.
import java.util.Stack;
Stack<Integer> stack = new Stack();
//원소 추가
stack.add(1);
stack.add(2);
stack.add(3);
//원소 삭제
stack.pop(); //3 반환하고 스택에서 삭제한다.
//제일 위에있는 원소 확인
stack.peek(); //2
//스택 비어있는지 확인
stack.isEmpty(); //false
큐는 FIFO(First In First Out:선입선출)
로 먼저 삽입한 원소가 먼저 나오는 자료 구조입니다. 긴 빨대를 연상하면 쉽습니다. 양쪽이 뚫려있어 위에서 넣은 원소는 밑으로 먼저 빠져나갑니다.
자바에서는 큐가 인터페이스로 작성되어있기 때문에 인터페이스 Queue를 구현하는 클래스를 사용해야 합니다. 가장 많이 활용되는 클래스는 LinkedList
입니다.
Queue<Integer> queue = new LinkedList<>();
//원소 삽입
queue.add(1);
queue.add(2);
queue.add(3);
//원소 삭제
queue.poll(); //1
queue.poll(); //2
//큐 비어있는지 확인
queue.isEmpty(); //false
//원소 확인
queue.peek(); //3