남극

Java Stack 본문

JAVA/Data Structure

Java Stack

펭1구 2020. 3. 8. 05:58

Stack 

우선 stack이 무엇이냐 하면 사전적 정의로는 쌓아 올린다는 뜻을 가지고 있습니다. 한 방향에서 쌓아 올리는 형태의 자료구조를 뜻합니다.

사진을 보시면 첫 번째 값은 가장 마지막에 저장되어 있는 것을 보실 수 있습니다. 위에 쓰여있듯이 후입 선출의 구조를 가지고 있습니다. 해석하자면 마지막에 들어온 값이 가장 먼저 나간다는 뜻입니다. 가장 먼저 들어온 것이 가장 마지막에 나간다고 보실 수도 있습니다. 이것을 간단하게 LIFO(Last-In-Last-Out)라고 칭합니다. 스택에는 TOP이라는 개념이 있습니다. 이 top이라는 곳으로만 데이터에 접근하도록 제한하는 것입니다. 다른 곳으로는 데이터가 들어오지 않도록 말입니다.

 

Stack 클래스의 계산
push 스택의 탑에 아이템을 삽입
pop 스택의 탑에 있는 아이탬 하나를 삭제
empty 스택이 비었는지 검사 후 true나 false를 반환
peek 스택의 탑에 있는 객체를 탐색
search 대입한 인자 값에 대응하는 스택의 위치를 반환, 시작의 위치는 top을 기준으로 1부터 시작

위에 있는 메서드를 한 번 모두 시험해보도록 하겠습니다. 궁금해서 그냥 다 해보았습니다.

public class StackTest {
	public static void main(String[] args) {
		Stack<Object> st = new Stack<Object>();
		st.push("one");
		st.push("two");
		st.push("three");
		st.push("four");
		st.push("five");
		System.out.println("push : " + st);
		st.pop();
		System.out.println("pop : " + st);
		System.out.println("peek : " + st.peek());
		System.out.println("search : " + st.search("four"));
		System.out.println("empty : " + st.empty());
		st.pop();
		st.pop();
		st.pop();
		st.pop();
		System.out.println("empty : " + st.empty());
		
	}
}

result

push : [one, two, three, four, five]
pop : [one, two, three, four]
peek : four
search : 1
empty : false
empty : true

 

하나하나 실험을 해봤습니다. 위에 있는 결과를 보시면 push 한 것을 출력하면 들어간 순서대로 값이 나옵니다. 위에 있는 그림에서 검은색 숫자의 순서대로 나오는 것을 보실 수 있습니다. 하지만 pop은 흰색 숫자의 순서대로 삭제되는 것을 보실 수 있습니다. push 한 것을 출력하는 것은 순서 자체는 리스트처럼 들어가지만 값을 추출할 때 흰색 숫자의 순서대로 나옵니다. 나머지 메서드들은 한번 사용해보시면서 이해하는 것이 빠를 것이라고 생각됩니다.

 

생활 속 예시

우리가 사용하는 뒤로 가기 버튼과 앞으로 가기 버튼을 눌렀을 때 이전에 사용하던 페이지로 가는 것이 있고 문자열을 입력하고 역으로 출력할 때 등 사용할 수 있는 개념입니다. 상당히 일상생활에서도 쓰이는 모습을 보실 수 있습니다.

'JAVA > Data Structure' 카테고리의 다른 글

Java Generics  (0) 2020.03.08
JAVA Queue  (0) 2020.03.08
Iterator - Java  (0) 2020.02.26
ArrayList와 Vector의 차이점 in Java  (0) 2020.02.19
JAVA - 자료구조 Collection Framework  (0) 2020.01.05
Comments