Stack


Stack이란 책을 쌓는 것처럼 데이터를 차곡차곡 쌓아 올린다는 것을 의미하며 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조를 말한다. 즉 마지막에 추가한 것을 가장 먼저 빼내는 LIFO(Last In First Out)구조 또는 가장 먼저 추가한 것을 가장 나중에 빼내는 FILO(First In Last Out)구조의 형식을 가지고 있다.

 

- push : Stack에 데이터를 넣는 기능

- pop : Stack에서 데이터를 빼는 기능

Stack의 특징


  • LIFO, FILO 구조
  • 가장 위에 있는 데이터 즉 가장 최신에 추가된 데이터를 top으로 정한다
  • 재귀알고리즘, 실행취소, 브라우저 방문기록 등에 사용
  • 컴퓨터 내부의 프로세스 구조의 함수 동작 방식

 

Stack의 사용법


  • Stack선언
import java.util.Stack; //Stack클래스 임포트

Stack<Integer> stack_int = new Stack<Integer>(); // Integer 형 스택 선언
  • Stack에 데이터추가
stack_int.push(1);     // Stack 에 1 추가
stack_int.push(2);     // Stack 에 2 추가
stack_int.push(3);     // Stack 에 3 추가 
//push() 성공시 해당 값 리턴해줌
  • Stack에 데이터 빼기
stack_int.pop(); //마지막에 넣은 데이터가 3이기 때문에 3출력
stack_int.pop(); //2출력
stack_int.pop(); //1출력

 

ArrayList를 활용하여 Stack자료구조 구현해보기


//다양한 데이터 타입을 다룰 수 있도록 Java Genric 타입 활용
public class MyStack<T>{
    
    ArrayList<T> stack = new ArrayList<T>();
    
    public void push(T data){
        stack.add(data);
    }
    
    public T pop(){
        if(stack.isEmpty()){
            //stack에 데이터가 없을 시 null을 return
            return null;
        }
        return stack.remove(stack.size()-1);
    }
}

 

'자료구조' 카테고리의 다른 글

Hash Table  (0) 2021.10.24
Double Linked List  (0) 2021.10.15
Single Linked List  (0) 2021.10.15
Queue  (0) 2021.10.15
알고리즘 복잡도 표현 방법  (0) 2021.10.15

+ Recent posts