Stack
LIFO (Last-In First-Out)
후입선출 : 입구 = 출구
-> 마지막에 들어온 것이 먼저 나감
용어
- peek(top): 스택의 최상단, 가장 최근에 들어온 데이터
- push: 스택의 top에 데이터를 넣는 행위
- pop: 스택의 top에서 데이터를 빼는 행위
- empty/full: 스택이 비었는지/ 가득 차있는지 체크
- size(level): 스택의 크기 리턴
Java Stack
Stack 선언
import java.util.Stack; //import
Stack<Integer> stack = new Stack<>();
Stack 값 추가
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.push(2); // stack에 값 2 추가
stack.push(3); // stack에 값 3 추가
Stack 값 삭제
stack.pop(); // stack의 가장 위쪽 원소값(3) 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
Stack 에서 가장 마지막에 들어간 값(상단) 출력
stack.peek(); // stack의 가장 상단의 값 출력
Queue
FIFO (First-In First-Out)
선입선출 : 입구와 출구가 다름
-> 먼저 들어온 것이 먼저 나감
- 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행
- 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행
용어
- front: 큐의 맨 앞, 데이터가 나가는 곳
- rear: 큐의 맨 뒤, 데이터가 들어오는 곳
- enqueue: 큐의 뒤에 데이터 추가
- dequeue: 큐의 앞에 데이터 삭제
- empty/full: 큐가 비었는지 가득 찼는지 검사
- getfront: 큐의 맨 앞을 알려주는 것 (스택의 peek)
- size(level): 큐의 크기 리턴
Java Queue
Queue 선언
import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>();
Queue 값 추가
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
Queue 값 삭제
queue.poll(); // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove(); // queue에 첫번째 값 제거
queue.clear(); // queue 전체 값 제거 (초기화)
Queue 에서 가장 먼저 들어간 값 출력
queue.peek();
Reference
그림출처 https://tutsmaster.org/how-to-represent-stack-in-c-data-structure/