언어 자료구조 알고리즘/디딤돌 Java 언어 Part2 활용

[Java 언어 활용] 3.8 Stack 클래스

언제나휴일 2016. 12. 10. 11:38
반응형

[Java 언어 활용] 3.8 Stack 클래스


 

 JavaStack 클래스는 자료구조 스택을 구현한 것입니다. 자료구조 스택은 LIFO(List In First Out, 후입선출) 형태로 자료를 보관하는 임시 버퍼입니다. 버퍼는 임시로 자료를 보관해 두었다가 필요할 때 꺼내 쓰는 저장소며 스택은 꺼내달라고 요청하면 가장 최근에 보관한 자료를 꺼내줍니다.

 

 JavaStack 클래스에서는 일반적인 스택에 약속하고 있는 push 메서드와 pop 메서드를 제공하고 있으며 이 외에 peek, emptry 메서드 및 search 메서드를 제공합니다.

public void push(Element data);//순차보관

public Element pop();//가장 최근에 보관한 꺼내고 반환

public Element peek();//가장 최근에 보관한 단순 참조, 꺼내지 않음

public boolean empty(); //비어있는지 판별

public int search(Element data); //data 보관한 순번 반환(1부터 시작)

 

 push 메서드는 스택에 자료를 보관할 때 사용하는 메서드이며 pop 메서드는 가장 최근에 보관한 자료를 꺼낼 때 사용하는 메서드입니다. peek 메서드는 가장 최근에 보관한 자료를 단순 참조할 때 사용하며 empty 메서는 비어있는지 판별하는 메서드입니다. 그리고 search 메서드는 자료가 몇 번째에 있는지 순번을 반환합니다. 주의할 점은 search 메서드의 반환 값은 인덱스가 아니라 순번입니다. 따라서 2,3 순으로 자료를 보관할 때 search(3)의 결과는 2입니다.

 

 다음은 스택을 사용한 예제 코드입니다.

▷ 소스 3.10 스택 사용 예

//스택 사용

import java.util.Stack;

public class Program {

        public static void main(String[] args){

               Stack stack = new Stack();

               stack.push(3); //3

               stack.push(2); //3, 2

               System.out.println(stack.pop()); //2 출력, 스택에는 3

               stack.push(6); //3, 6

               stack.push(8); //3, 6, 8

               System.out.println(stack.peek()); //가장 최근에 보관한 값은 8

               System.out.println(stack.search(6));// 번째 보관한 요소임

               while(stack.empty()==false){

                       System.out.println(stack.pop());//8, 6, 3 순으로 꺼냄

               }

        }

}

 

▷ 소스 3.10 실행 결과

2

8

2

8

6

3

[그림 3.4] 소스 3.10 수행 과정(Loop 이전까지)

[그림 3.4] 소스 3.10 수행 과정(Loop 이전까지)

 

[그림 3.4]는 소스 3.10을 수행하는 과정을 도식화한 것입니다. while 문 이전까지의 모습을 표현한 것이며 참고하여 확인하시기 바랍니다.

반응형