Stack은 말 그대로 데이터를 순서대로 쌓는 자료구조이다.
가장 먼저 들어간 데이터가 가장 나중에 나올 수 있다.
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
// 1 <- 2 <- 3 <- 4
stack.pop();
stack.pop();
stack.pop();
stack.pop();
// 들어간 순서와는 반대로 나온다.
// 4 <- 3 <- 2 <- 1
데이터는 하나씩 넣고 뺄 수 있다.
Stack 자료구조는 데이터가 아무리 많아도 하나씩 데이터를 넣고 뺀다. 한꺼번에 여러 개를 넣거나 뺄 수 없다.
하나의 입출력 방향을 가진다.
Stack 자료구조는 데이터의 입출력 방향이 같다. 만약, 입출력 방향이 여러 개라면 Stack 자료구조라고 볼 수 없다.
Queue는 줄을 서는 것과 같은 느낌의 자료구조이다.
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
// 1 <- 2 <- 3 <- 4
queue.poll();
queue.poll();
queue.poll();
queue.poll();
// 들어온 순서대로 나간다.
// 1 <- 2 <- 3 <- 4
데이터는 하나씩 넣고 뺄 수 있다.
Queue 자료구조는 데이터가 아무리 많이 있어도 하나씩 데이터를 넣고, 뺀다. Stack과 마찬가지로 한꺼번에 여러 개를 넣거나 뺄 수 없다.
두 개의 입출력 방향을 가지고 있다.
데이터의 입출력 방향이 다르다. 만약 입출력 방향이 같다면 Queue 자료구조라고 볼 수 없다.