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 |