스택
스택 (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