자료구조

스택

Bryan Lee 2022. 4. 23. 01:10

1) 스택의 특징

- 스택은 큐와 함께 가장 많이 쓰이는 자료구조 중 하나임

- 큐가 FIFO 정책을 쓴다면, 스택은 LIFO 정책을 씀

-> 즉, 가장 마지막에 넣어진 데이터를 먼저 뽑음

 

2) 스택의 활용

- 컴퓨터 내부 프로세스 구조의 함수 동작 방식에 스택이 활용됨

 

3) 스택의 메소드

- push(): 데이터를 스택에 넣기

- pop(): 데이터를 스택에서 꺼내기 

 

4) 스택의 장단점

장점

(1) 구조가 단순해서 구현이 쉬움

(2) 데이터 저장/읽기 속도가 빠름

단점

(1) 데이터 최대 개수를 미리 정해야 함

(2) 저장 공간의 낭비가 발생할 수 있음  

 

5) 스택 활용하기

import java.util.Stack;

Stack<Integer> stack_int = new Stack<Integer>();

stack_int.push(1);
stack_int.push(2);
stack_int.push(3);

stack_int.pop();
stack_int.pop();
stack_int.pop();

6) 스택의 push(), pop() 기능 구현하기 

(1) 스택에 데이터가 없으면 null을 리턴함

(2) Java의 Generic 타입 문법을 활용함

public class MyStack<T>{

  private ArrayList<T> stack = new ArrayList<T>();
  
  public void push(T item){
    stack.add(item);
  }
  
  public T pop(){
    if(stack.isEmpty()){
       return null;
    }
    
    return stack.remove(stack.size()-1);
  }
  
  public boolean isEmpty(){
    return stack.isEmpty();
  }
  
  public static void main(String[] args){
    MyStack<Integer> ms = new MyStack<Integer>();
    ms.push(1);
    ms.push(2);
    System.out.println(ms.pop());
    ms.push(3);
    System.out.println(ms.pop());
    System.out.println(ms.pop());
  }
  
 }

 

참고

- 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online편