스택(Stack)과큐(Queue)는 리스트(List) 자료구조의 특별한 경우이다.
Stack은 후입선출(Last In First Out, LIFO) 구조로
→ 가장 마지막에 넣은 데이터가 스택의 맨 위에 위치하기 때문에 가장 먼저 빼서 사용할 수 있다.
배열과 마찬가지로 Stack에서 데이터를 넣는 것은 Push 라고 하며 데이터를 읽는 것과 동시에 꺼내는것(삭제)을pop이라고 한다.
스택 자료구조의 대표적 예는 뒤로가기 버튼으로
→ 인터넷 서핑을 할 때 뒤로가기를 누르면 바로 이 전 페이지, 즉 가장 최근의 페이지를 보여준다.
자료구조 Stack의 특징은 : 입력과 출력이 하나의 방향으로 이뤄지는 제한적 접근이라는 것이다.

※ 후입선출(Last In First Out, LIFO) 은 FILO(First In Last Out)이라고도 한다.
ex1) 1, 2, 3, 4 를 차례대로 스택에 넣는다.
stack.push(데이터)
------------------
1 <- 2 <- 3 <- 4
------------------
: 들어간 순서대로 1번이 가장 먼저 들어가고 4번이 마지막으로 들어간다.
ex2) 빈 스택이 될 때까지 데이터를 전부 빼낸다.
stack.pop()
------------------
------------------
4, 3, 2, 1
: 가장 마지막에 있던 데이터부터 차례대로 나오게 된다.
함수 실행 데이터는 → 스택의 프레임으로 저장된다.프레임은 해당 기능에 필요한 데이터가 저장되는 공간 블록을 말한다.변수를 선언할 때마다 → 새로 선언된 변수는 스택의 최상위 블록으로 push된다.로컬변수(value type 또는 프리미티브, 프리미티브 상수), 포인터 및 함수 프레임이다.1. 새로운 페이지로 접속하면 -> 현재 페이지는 prev stack에 보관한다.
2. 뒤로 가기버튼을 눌러 이전 페이지로 돌아갈 때엔 -> 현재 페이지를 next stack에 보관하고 prev stack에서 가장 나중에 보관된 페이지를 현재 페이지로 가져온다.
3. 앞으로 가기 버튼을 눌르면 - > next stasck에서 가장 마지막으로 보관된 페이지를 가져온다.
4. 마지막으로 현제 페이지를 prev stack에 보관한다.
enqueue, 데이터를 꺼내는 것을 dequeue라고 한다.
예1) 1, 2, 3, 4를 큐에 차례대로 넣습니다.
queue.enqueue(데이터)
출력 방향 <---------------------------< 입력 방향
1 <- 2 <- 3 <- 4
<---------------------------<
들어간 순서대로, 1번이 제일 먼저 들어가고 4번이 마지막으로 들어가게 됩니다.
예2) 큐가 빌 때까지 데이터를 전부 빼냅니다.
queue.dequeue(데이터)
출력 방향 <---------------------------< 입력 방향
<---------------------------<
1, 2, 3, 4
제일 첫 번째 있는 데이터부터 차례대로 나오게 됩니다.
2️⃣ 데이터는 하나씩 넣고 뺄 수 있다.
파워포인트 속 페이지를 순서대로 프린트를 한다고 가정해보자.
컴퓨터 장치들 사이에서 데이터를 주고받을 때, 각 장치 사이의 속도 차이나 시간 차이를 극복하기 위해
→ 임시 기억 장치의 자료 구조로 Queue를 사용하고, 이를 통틀어 버퍼(Buffer)라고 한다.
일반적으로 프린터는 속도가 느리고 CPU는 데이터 처리 속도가 빠르다.
따라서 CPU는 빠른 속도로 인쇄에 필요한 데이터를 만든 다음 → 인쇄 작업 Queue 에 저장하고 다른 작업을 수행한다.
프린터는 인쇄 작업 Queue에서 데이터를 받아 → 일정한 속도로 인쇄한다.