1. 스택의 구조
- 스택은 LIFO( Last-In , First-Out ) 또는 FILO(First-In , Last-Out) 데이터 관리 방식을 따름
- LIFO : 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책
- FILO : 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책
- 대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- 일상 생활 속 스택의 활용
- 연탄 구멍
- 쌓아둔 책
- 주요 기능
- Push : 데이터를 스택에 추가
- Pop : 데이터를 스택에서 꺼내기
- 장단점 ( 배열을 사용해서 구현 한다 가정 )
- 장점
- 구조가 단순해서 구현이 쉽다.
- 데이터 저장/ 읽기 속도가 빠르다.
- 단점 (일반적인 스택 구현시)
- 데이터 최대 갯수를 미리 정해야 한다.
- 저장 공간의 낭비가 발생할 수 있음
- 미리 최대 갯수 만큼 저장 공간을 확보 해야하기 때문.
- 장점
2. Java에서 스택(Stack) 자료구조 사용하기
- java.util 패키지에서 Stack 클래스 제공
- push(아이템) : 아이템을 스택에 추가
- pop( ) : 스택에서 마지막에 넣은 아이템을 리턴하고 , 해당 아이템은 Stack에서 삭제
import java.util.Stack;
// 자료형 매개변수를 넣어서, 스택에 들어갈 데이터의 타입을 지정해야함
Stack<Integer> stack_int = new Stack<Integer>(); // Integer형 스택의 선언
- 스택에 값 추가하기 push( 아이템 ) 메소드
stack_int.push(1);
stack_int.push(2);
stack_int.push(3);
- 스택에서 값 추출하기 pop( ) 메소드
stack_int.pop(); // 스택에서 가장 마지막에 넣은 값 제거
3. Java에서 ArrayList 를 사용해서 직접 스택(Stack) 구현하기
import java.util.ArrayList;
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;
} else {
return stack.remove(stack.size()-1);
}
}
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());
}
}
'자료구조와 알고리즘 (Java)' 카테고리의 다른 글
[자료구조][Java] 이중 연결 리스트/더블 링크드 리스트(Doubly Linked List) (0) | 2022.04.20 |
---|---|
[자료구조][Java] 연결리스트/링크드 리스트(Linked List) (0) | 2022.04.19 |
[자료구조][Java] 큐 (Queue) (0) | 2022.04.19 |
[자료구조][Java] 배열( Array ) (0) | 2022.04.19 |
자료구조, 알고리즘 왜 배워야 하나요? (0) | 2022.03.15 |
댓글