13년도 이후로 자료구조를 펴보지 않아 기억이 나지 않아서 당분간은 자료구조를 보려고한다..
오늘은 스택!
스택(Stack)은 후입선출(Last - Input, First-Out)LIFO 구조를 가진 자료구조이며,
Top : 스택의 맨 윗 부분
Bottom : 스택의 맨 아래 부분
Push : 스택에 데이터를 푸쉬(넣는 것)를 의미
Pop : 스택에서 데이터를 빼는 것을 의미
Peek : 스택에서 Top 위치에 있는 데이터를 확인 하는 것을 의미, 데이터가 증가하거나 감소하지 않음.
Stack Underflow : 스택이 비어있을 때 Pop하려는 경우 발생, 더 이상 감소시킬 데이터가 없기 때문에
Stack Overflow : 스택이 꽉차있을 때 Push하는 경우 발생, 더 이상 공간이 없는데 추가를 하려했기 때문에
로 이루어진다.
간단한 예제를 통해 사용해 보았다.
package structure; public class Stack { private int[] arr; // 리스트 선언 private int top = 0; // 인덱스 0으로 선언 public Stack(int stackSize) { this.arr = new int[stackSize]; } private void push(int i) { if (top < arr.length) { arr[top++] = i; System.out.println("pushed : " + i); } else { System.out.println("스택이 꽉참"); } } private int peek() { return arr[top - 1]; } private int pop() { if (top > 0) { return arr[--top]; } else { throw new java.util.NoSuchElementException(); } } public static void main(String[] args) { Stack st = new Stack(3); st.push(1); st.push(2); st.push(3); st.push(4); System.out.println(st.pop()); System.out.println(st.pop()); } }
실행결과 스택 3개를 선언했는데 4개를 넣으니 오버플로우가 발생한다.
pop을 해보니 후입선출이라 뒤에서부터 2개가 출력된 모습을 볼 수 있었다.
댓글