본문 바로가기
자료구조 1 Page 노트 정리

자료구조 1 Page 노트 정리 Stack

by 민경현(John) 2024. 10. 14.

First-Word

스텍 메모리 영역 : 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역. 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸. 

Stack

  • 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 구조
  • 마지막에 저장한 데이터를 가장 먼저 꺼내는 자료 구조를 가지고 있는데 , LIFO(Last In First Out) 후입선출 구조라고 말한다.
  • 스택의 쓰임새의 대표적인 예로 탄창을 들 수 있다. 마지막에 넣은 총알이 가장 먼저 발사 되고 가장 먼저 넣은 총알이 마지막에 발사되는 것을 떠올리면 된다.
    • Stack 메모리, 수식계산, undo/redo, 웹브라우저의 뒤로/앞으로 기능 등

Stack 대신 Deque 사용 권장

Stcak 클래스는 Vetor 클래스를 상속을 받아 구현되었는데 이 Vector 클래스 자체가 굉장히 오래되어 취약점이 많고, 상속으로 인한 부모 메서드 공유 문제 때문에 사용자가 잘못되게 사용할 수 있다는 문제가 있다.

자바 공식 문서에서는 Stack 클래스보다 Deque 클래스 사용을 권장하고 있다.

사용법

 

메서드 설명
boolean empty() stack이 비어있는지 알려준다.
.peek() Stack의 맨 위에 저장된 객체를 반환
pop과 달리 Stack에서 객체를 꺼내지 않는다.
비어있을 경우 EmptyStackException을 발생
.pop() Stack의 맨 위에 저장된 객체를 꺼낸다
비어있을 경우 EmptyStackException 발생
.push(객체) Stack에 객체를 저장한다
.search(객체) Stack에서 주어진 객체를 찾아서 그 위치를 반환
못 찾을 경우 -1을 반환
배열과 달리 위치는 0이 아닌 1부터 시작