[자료구조]_Stack

김예인·2023년 5월 18일

백엔드 공부일지

목록 보기
25/43


Stack

데이터(data)를 순서대로 쌓는 후입선출 자료 구조

  • LIFO(Last In First Out) / FILO(First In Last Out)
  • 하나의 입출력 방향으로 제한적 접근
  • 데이터를 한번에 하나씩만 넣고 뺄 수 있음
  • Stack에 데이터를 넣는 것을 'PUSH', 데이터를 꺼내는 것을 'POP'

🍊 장점

  • 후입선출 구조로, 저장된 데이터를 가져오는 속도가 빠르다
  • 자바에서 이미 Stack 클래스를 구현하여 기본 제공한다

🍋 단점

  • 크기 제한이 없어, 메모리 사용량의 불필요한 증가 우려
  • Stack 클래스는 Vector 클래스를 상속받아 구현되어 있어,
    • 크기를 동적으로 조정하지 않는다
    • 중간에서 데이터를 삽입, 삭제를 할 수 있게 된다
      stack.get(index) : 특정 인덱스 원소 찾기
      stack.set(index,element) : 특정 인덱스에 원소 넣기
      stack.remove(index) : 특정 인덱스 원소 삭제

💻 코드예시

Stack<Integer> stack = new Stack<>(); //Integer형 스택 선언

stack.push(1);
stack.push(2);
stack.push(3);

// 1 <- 2 <- 3

// 스택이 빌 때까지 데이터를 전부 뺀다
stack.pop();
stack.pop();
stack.pop();

// 3 -> 2 -> 1
profile
백엔드 개발자 김예인입니다.

0개의 댓글