Stack and Queue
🧸 선형 자료구조 (Linear)
- 원소들을 순차적으로 나열시킨 형태
- Array, List, Stack, Queue
💦 비선형 자료구조 (NonLinear)
- 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태
- Tree, Graph
🎃 Stack
public class Stack<E> extends Vector<E> {
public Stack() {
}
public E push(E item) {
addElement(item);
return item;
}
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
public boolean empty() {
return size() == 0;
}
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
}
- 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조로 되어 있다. (LIFO : Last In First Out)
- 나중에 들어간 원소가 먼저 나온다.
- pop(), push(item), peek(), isEmpty()
🥦 Queue
public interface Queue<E> extends Collection<E> {
boolean add(E e);
boolean offer(E e);
E remove();
E poll();
E element();
E peek();
}
- 먼저 집어 넣은 데이터가 먼저 나오는 선형 구조로 저장하는 형식을 말한다. (FIFO : First In First Out)
- Java Collection에서 인터페이스이고 이를 구현하는 Priority queue가 있다.
- add(item), remove(), peek(), isEmpty()
예외
Reference