알고리즘

스택

개발 공부 2023. 4. 25. 22:10

 스택 (stack) 

스택은 데이터를 일시적으로 저장하기 위한 자료구조로, 가장 나중에 넣은 데이터를 가장 먼저 꺼낸다.

(후입선출, FILO - First In Last Out) ex. 프링글스

  • 스택에 데이터를 넣는 작업 : push
  • 스택에서 데이터를 꺼내는 작업 : pop
  • 푸시와 팝을 하는 위치 : top or peek
  • 스택의 가장 아랫부분 : bottom
  • 스택이 비어있는지 확인 : isEmpty 
  • 스택이 가득차있는지 확인 : isFull
  • 스택 용량 : max or getSize
  • 스택에있는 요소 수 : ptr
  • 스택 본체 : int[] stk or 리스트로도 만들 수 ㅇㅇ

IntStack.java 파일 생성

 

생성자 IntStack 

 

푸시 메서드 push

스택에 데이터를 푸시하는 메서드. 스택이 가득차서 푸시할 수 없는 경우 예외 던지기

OverflowIntStackException 

 

팝 메서드 pop

스택의 꼭대기에 데이터를 팝(제거)하고 그 값을 반환하는 메서드

스택이 비어있어 팝을 할 수 없는 경우 예외 던지기. 

EmptyIntStackException 

 

피크 메서드 peek

스택의 탑에 있는 데이터를 '몰래 엿보는'메서드입니다.

스택이 비어이는 경우 예외 던기지.

EmptyIntStackException 

 

검색 메서드 indexOf 

검색은 top에서 bottm 쪽으로 선형 검색. 즉, 배열 인덱스가 큰쪽에서 작은쪽으로 스캔한다.

검색에 성공하면 찾아낸 요소의 인덱스를 반환, 실패하면 -1을 반환

 

스택의 모든 요소를 삭제하는 메서드 clear 

스택 포인터 ptr값을 0으로 하면 끝난다. 

 

용량을 확인하는 메서드 capacity

capacity메서드는 스택의 용량(max의 값)을 반환하는 메서드 

 

데이터 수를 확인하는 메서드 size

현재 스택에 쌓여있는 데이터 수(ptr의 값)

 

스택이 비어있는지 검사하는 메서드 isEmpty

비어있으면 true 아니면 false 

 

스택이 가득 찼는지 검사하는 메서드 isFull

스택이 가득 찼으면 true 아니면 false 

 

스택 안의 모든 데이터를 표시하는 메서드 dump

스택에 쌓여있는 모든 데이터를 바닥에서 꼭대기 순으로 표시하는 메서드

스택이 비어있으면 '스택이 비어있습니다' 라고 표시한다.

스택의 사용사례

  • 재귀 알고리즘을 반복문을 통해서 구현할 수 있게 해줌
  • 실행 취소 (undo)
  • Backtracking
  • 웹 브라우저 뒤로가기
  • 구문분석
  • 후위(postfix) 표기법 연산
  • 문자열의 역순 출력 등

출처 : https://yoongrammer.tistory.com/45

 

[자료구조] 스택 (Stack)

목차 [자료구조] 스택 (Stack) 스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조로 되어 있습니다. 식당에 쌓여있는 접시들이 좋은 예입니다. 순서대로 쌓인 접시가 스택 구조와 같습니다

yoongrammer.tistory.com