스택 (Stack) & 큐 (Queue)

kmb·2022년 1월 10일
0

자바

목록 보기
4/31
post-thumbnail

스택(Stack)

차곡차곡 쌓아올린 형태의 자료구조를 의미한다.

top : 스택의 제일 상단. 정해진곳에서 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있다.
push : top에 전달된 요소를 삽입하는 연산
pop : top에 제일 마지막으로 저장된 요소를 반환하고, 해당 요소를 스택에서 삭제하는 연산

스택(Stack)은 시간순서에 따라 자료가 쌓이므로 가장 마지막에 삽입된 자료가 가장먼저 삭제되는 특징을 갖는다. (LIFO, Last-In-First-Out) 구조이다.

비어있는 스택(Stack)에서 원소를 추출하려고 할 경우를 stack underflow 라고 하며, 스택(Stack)이 넘칠경우 stack overflow 라고 한다.

 

큐(Queue)

한쪽 끝에서 삽입, 다른 끝쪽에서 삭제가 양쪽으로 이루어지는 자료구조를 의미한다.

삽입연산만 하는곳을 리어(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) 영역에 아무것도 없을때 프로그램은 종료된다.

출처 : 이지업 컨텐츠 내의 데어프로그래밍 자바강의

profile
꾸준하게

0개의 댓글