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 |