STACK
- 데이터를 제한적으로 접근할 수 있는 구조
- 큐 : FIFO정책
- 스택 : LIFO정책
- 대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작방식
- 주요 기능
- push(): 데이터를 스택에 넣기
- pop() : 데이터를 스택에서
- 장점
- 구조가 단순하다
- 데이터 저장/읽기 속도가 빠르다
- 단점 (일반적인 스택 구현시)
- 데이터 최대 갯수를 미리 정해야 한다.
- 미리 최대 갯수만큼 공간을 확보해야 한다.
스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임. 이 경우, 위에서 열거한 단점이 있을 수 있음
// java.util.Stack클래스 임포트 import java.util.Stack; Stack<Integer> stack_int = new Stack<Integer>();
stack_int.push(1); // Stack에 1추가 stack_int.push(2); stack_int.push(3);
stack_int.pop(); // stack에서 가장 나중에 추가한 값 제거
stack_int.pop();
stack_int.pop();
연습해보기
- JAVA ArrayList 클래스를 활용해서 스택을 다루는 push, pop 기능 구현해보기
- pop 기능 호출 시, 스택에 데이터가 없을 경우, null 을 리턴하도록 함
- 다양한 데이터 타입을 다룰 수 있도록, Java Genric 타입 문법을 활용해보기
// src/com.company/Stack package com.company; import java.util.ArrayList; public class Stack<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(); } }
// src/com.company/Main package com.company; public class Main { public static void main(String[] args) { Stack<Integer> ms = new Stack<>(); ms.push(1); ms.push(2); System.out.println(ms.pop()); ms.push(3); System.out.println(ms.pop()); System.out.println(ms.pop()); } }
'Algorithm > Algorithm-Java' 카테고리의 다른 글
Java-자료구조 (시간 복잡도) (0) | 2021.11.18 |
---|---|
Java-자료구조 (Linked-List) (0) | 2021.11.17 |
Java-자료구조 (Queue) (0) | 2021.11.17 |
Java-자료구조(Array) (0) | 2021.11.16 |
Java 를 Jupyter 환경에서 구축 (0) | 2021.11.15 |