[Java/자료구조] Stack과 Queue

Nakjoo·2023년 1월 16일
0

[SEB_BE_43]

목록 보기
20/29

1. Stack

Stack은 말 그대로 데이터를 순서대로 쌓는 자료구조이다.

1.1. Stack의 구조

가장 먼저 들어간 데이터가 가장 나중에 나올 수 있다.

  • 자료구조 Stack의 특징은 출력이 하나의 방향으로 이루어지는 제한적 접근에 있다.
  • 이런 구조를 LIFO라고 부른다.
  • Stack에 데이터를 넣는 것을 'push', 꺼내는 것을 'pop'이라고 한다.

1.2. Stack의 특징

  1. LIFO(Last In First Out)
  • 먼저 들어간 데이터는 제일 나중에 나오는 후입선출의 구조를 갖고 있다.
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
  1. 데이터는 하나씩 넣고 뺄 수 있다.
    Stack 자료구조는 데이터가 아무리 많아도 하나씩 데이터를 넣고 뺀다. 한꺼번에 여러 개를 넣거나 뺄 수 없다.

  2. 하나의 입출력 방향을 가진다.
    Stack 자료구조는 데이터의 입출력 방향이 같다. 만약, 입출력 방향이 여러 개라면 Stack 자료구조라고 볼 수 없다.

2. Queue

Queue는 줄을 서는 것과 같은 느낌의 자료구조이다.

2.1. Queue의 구조

  • Stack과는 반대되는 개념으로 먼저 들어간 데이터가 먼저 나오는 FIFO구조이다.
  • 입력과 출력의 방향이 고정되어 있으며, 두 곳으로 접근이 가능하다.
  • Queue에 데이터를 넣는 것을 'enqueue', 꺼내는 것을 'dequeue'라고 한다.
  • 데이터가 입력된 순서대로 처리할 때 주로 사용한다.

2.2. Queue의 특징

  1. FIFO(First In First Out)
  • 먼저 들어간 데이터가 제일 처음에 나오는 선입선출의 구조
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
  1. 데이터는 하나씩 넣고 뺄 수 있다.
    Queue 자료구조는 데이터가 아무리 많이 있어도 하나씩 데이터를 넣고, 뺀다. Stack과 마찬가지로 한꺼번에 여러 개를 넣거나 뺄 수 없다.

  2. 두 개의 입출력 방향을 가지고 있다.
    데이터의 입출력 방향이 다르다. 만약 입출력 방향이 같다면 Queue 자료구조라고 볼 수 없다.

0개의 댓글