본문 바로가기
자료구조

배열을 이용한 스택

by 코리늬 2018. 1. 3.

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개가 출력된 모습을 볼 수 있었다.

'자료구조' 카테고리의 다른 글

기수 정렬  (0) 2018.01.29
퀵 정렬  (0) 2018.01.29
병합 정렬  (0) 2018.01.29
힙 정렬  (0) 2018.01.11
버블,선택,삽입 정렬  (0) 2018.01.10

댓글