Stack 클래스
후입선출(LIFO : Last in First Out) 구조
데이터를 아래서부터 차곡차곡 쌓아가며 저장하는 형태이고 가장 마지막으로 저장된 데이터가 가장 먼저 꺼내지는 구조이다.
스택에 저장된 데이터는 top(마지막에 저장된 데이터)에서만 접근이 가능하다. top에서만 데이터를 삽입, 삭제가 가능하다.
주요 메서드
메서드 | 내용 |
push(E item) | 데이터를 스택에 저장 |
pop() | 가장 위에 있는 데이터를 가져온다. 데이터를 스택에서 제거 |
peek() | 가장 위에 있는 데이터를 가져온다. 데이터를 스택에서 제거x |
boolean isEmpty() | 스택이 비어있는지 확인 |
- Stack 클래스 구현
public class Stack<T> {
class Node<T> {
private T data;
private Node<T> next;
public Node(T data) {
this.data = data;
}
}
private Node<T> top;
public void push(T item) {
Node<T> t = new Node<T>(item);
t.next = top;
top = t;
}
public T pop() {
if (top == null) {
throw new NoSuchElementException();
}
T item = top.data;
top = top.next;
return item;
}
public T peek() {
if (top == null) {
throw new NoSuchElementException();
}
return top.data;
}
public boolean isEmpty() {
return top == null;
}
public static void main(String[] args) {
Stack<Integer> s = new Stack<Integer>();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.peek());
System.out.println(s.isEmpty());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.isEmpty());
}
}
- 노드 내부 클래스로 생성
- push : 노드를 생성하여 top에 삽입해 준다.
- pop : 데이터를 꺼내고 다음 데이터를 top으로 지정
- peek : 데이터를 꺼내지 않고 조회만 가능하도록 한다.
- isEmpty : top이 null이면 스택은 비어있게 된다.
'Algorithm' 카테고리의 다른 글
[알고리즘] 깊이 우선 탐색(DFS) (0) | 2020.08.01 |
---|---|
[자료구조] 이진 탐색 트리(Binary Search Tree) (0) | 2020.07.31 |
[자료구조] 자바 Queue 정리 (0) | 2020.07.30 |
[정렬] 버블정렬(Bubble sort) (0) | 2020.07.19 |
[정렬] 선택정렬 (Selection sort) (0) | 2020.07.18 |