차곡차곡 쌓아올린 형태의 자료구조를 의미한다.
top
: 스택의 제일 상단. 정해진곳에서 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있다.
push
: top에 전달된 요소를 삽입하는 연산
pop
: top에 제일 마지막으로 저장된 요소를 반환하고, 해당 요소를 스택에서 삭제하는 연산
스택(Stack)은 시간순서에 따라 자료가 쌓이므로 가장 마지막에 삽입된 자료가 가장먼저 삭제되는 특징을 갖는다. (LIFO, Last-In-First-Out) 구조
이다.
비어있는 스택(Stack)에서 원소를 추출하려고 할 경우를 stack underflow
라고 하며, 스택(Stack)이 넘칠경우 stack overflow
라고 한다.
한쪽 끝에서 삽입, 다른 끝쪽에서 삭제가 양쪽으로 이루어지는 자료구조를 의미한다.
삽입연산만 하는곳을 리어(rear)
, 삭제연산만 하는곳을 프론트(front)
라고 한다.
이때 리어(rear)에서 이루어지는 삽입연산을 인큐(enQueue)
, 프론트(front)에서 이루어지는 삭제연산을 디큐(deQueue)
라고 한다.
offer
: 큐의 맨뒤에 전달된 요소를 삽입하는 연산.
poll
: 큐의 맨앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해다 요소를 큐에서 삭제하는 연산. 만약 큐가 비어있으면 null 반환.
즉, 큐(Queue)는 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 특징을 갖는다. (FIFO, First-In-First-Out) 구조
이다.
만약 StackEx01.class 이라는 파일을 실행했을때 출력 순서 및 큐(Queue) 와 스택(Stack)의 순서는 다음과 같다.
큐(Queue)
영역에서는 19번째(m1), 20번째(m2), 21번째(a메서드 실행), 6번째(b메서드 실행), 13번째(b1), 14번째(b2), 15번째(b3), 7번째(a2), 8번째(a3), 9번째(a4), 22번째(m4), 23번째(m5)
스택(stack)
영역에서는 나중에 실행된 b메서드가 가장 먼저 pop되어서 메모리영역에서 사라진다. 그 다음 a메서드가 pop되어서 메모리영역에서 사라지고, 마지막으로 main메서드가 pop되어서 메모리영역에서 사라진다.
스택(stack) 영역에 아무것도 없을때 프로그램은 종료된다.
출처 : 이지업 컨텐츠 내의 데어프로그래밍 자바강의