스택(stack)이란 쌓아 올리는 것을 의미한다.
[후입선출]
시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조적 특징
LIFO(Last In First Out) : 가장 나중에 들어온 데이터가 가장 먼저 나온다.
같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있다.
새로 삽입되는 자료를 가르키는 Top으로 정한 곳을 통해서만 접근할 수 있다
Top을 통해 삽입과 삭제를 할 수 있다.
스택에서 추가하는 연산은 Push, 삭제하는 연산은 Pop으로 표현
웹 브라우저 방문 기록 (뒤로 가기) - 가장 나중에 열린 페이지 부터 보여준다
실행 취소 (undo)
수식의 괄호 검사 - 연산자 우선순위 표현을 위한 괄호 검사
Queue는 줄, 줄을 서서 기다리는 것을 의미한다.
[선입선출]
일상 생활에서 또는 놀이동산에서 줄을 서서 기다릴때 먼저 온 사람부터 들어가는 구조
FIFO (First In First Out) : 가장 먼저 들어온 것이 가장 먼저 나온다.
스택에서 Top 한곳만을 통해 삽입과 삭제가 이뤄지지 않고, 삽입과 삭제작업이 양쪽에서 이뤄진다.
큐의 가장 첫 원소 = Front , 삭제 연산만 수행되는 곳
큐의 가장 끝 원소 = Rear , 삽입 연산만 수행되는 곳
큐의 Front에서 이뤄지는 삭제 연산은 디큐(Dequeue), Rear에서 이뤄지는 삽입 연산은 인큐(Enqueue)
접근방법은 가장 첫 원소와 가장 끝 원소로만 가능
데이터를 넣고 뺄 때 해당 값의 위치를 기억해야 한다 (스택에서 스택 포인터와 같은 역할)
https://gyoogle.dev/blog/computer-science/data-structure/Stack & Queue.html