Stack

st

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

qu

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/

업데이트: