본문 바로가기

TIL

자료구조 Stack

Stack의 특징

-Last In First Out

-One by One

-One Way

 

배열 또는 연결리스트로 구현 가능

Stack(스택)의 메소드

  • peek() : 스택의 가장 위에 있는 데이터 반환
  • push() : 스택의 가장 위에 있는 데이터(peek()) 위에 메모리 생성 및 데이터 추가
  • pop() : 스택의 가장 위에 있는 데이터 삭제 및 반환
  • isEmpty() : 스택이 비어있으면 true, 비어있지 않으면 false 반환
  • clear() : 모든 데이터를 삭제하고 스택 초기화
  • toString() : 모든 데이터를 출력
  • contains(1) : stack 에 값 1 들어있으면 true, 없으면 false

 

1. 자료 구조의 정책: LIFO(Last In First Out) 혹은 FILO(First In Last Out) -후입선출

Stack에 데이터를 넣는 것을 .push(), 데이터를 꺼내는 것을 .pop().

import java.util.Stack;

1, 2, 3, 4를 스택에 차례대로 넣습니다.

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

stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
---------------------------
들어간 순서대로, 1번이 제일 먼저 들어가고 4번이 마지막으로 들어가게 됩니다.
---------------------------

예2) 스택이 빌 때까지 데이터를 전부 빼냅니다.

stack.pop();
stack.pop();
stack.pop();
stack.pop();
---------------------------
4, 3, 2, 1
제일 마지막에 있는 데이터부터 차례대로 나오게 됩니다.
---------------------------

 

2. 데이터는 하나씩만 넣고 뺄 수 있음

Stack 자료 구조는 데이터가 아무리 많이 있어도 하나씩 데이터를 넣고, 뺌. (한꺼번에 여러 개를 넣거나 뺄 수 없음)

 

3. 하나의 입출력 방향 (프링글스 통)

Stack 자료 구조는 데이터의 입출력 방향이 같음.

입력과 출력이 하나의 방향으로 이루어지는 제한적 접근.

 

 

실사용 예제

브라우저의 뒤로 가기, 앞으로 가기 기능

'TIL' 카테고리의 다른 글

자료구조 Tree traversal  (0) 2023.05.17
자료구조 Graph  (0) 2023.05.05
자료구조 Tree  (0) 2023.05.05
자료구조 Queue  (0) 2023.05.05
부트캠프 main project "My-Buddy" -Composite Service Layer  (2) 2023.05.02