Stack 스택
선입후출(FILO : First-In Last-Out), 후입선출(LIFO) 방식의 자료구조
가장 최신 입력된 순서대로 처리해야 하는 상황에 이용
스택은 프링글스 과자와 같다.
위에서부터 먹으며, 아래에는 넣을 수 없다.
Push() : 스택에 값을 넣음
Pop() : 스택에서 값을 꺼냄 (제일 마지막에 넣은 값이 나옴)
Push를 하기 전에는 스택이 꽉 차 있는지를 확인하고, 꺼낼 때는 비어 있는지 확인하고 진행함
주로 ctrl-z 하면 바로 이전에 했던 상황을 되돌리는 undo를 하는데 이 때 스택이 쓰임
컴퓨터 안에서는 수많은 함수 호출이 이루어지는데, 함수는 실행이 끝나면 자신을 호출한 함수로 되돌아가야한다. 이 때 복귀할 주소를 기억하기 위해 스택이 사용된다.
시스템 스택에는 함수가 호출될 때마다 활성 레코드가 만들어지며 여기에 복귀주소가 저장된다.
Queue 큐
선입선출(FIFO : First-In First-Out) 방식의 자료구조
온 순서대로 처리를 해야하는 상황에 이용큐는 먼저 들어온 사람이 먼저 나가는 군대와 같다.
Enqueue() : 큐에 값을 넣음 (제일 마지막에 값을 넣음)
Dequeue() : 큐에서 값을 꺼냄 (제일 먼저 들어온 값을 꺼냄)
앞을 가리키는 front와 뒤를 가리키는 rear가 존재
값을 넣고 빼는 과정에서 front와 rear값이 계속 증가를 하기 때문에 앞이 배열의 앞이 비어있어도 사용하지 못하는 문제가 생김 => 원형 큐
큐는 운영체제에서도 사용된다. 보통 컴퓨터와 주변기기 사이에는 큐가 존재한다. 그 이유는 CPU와 주변 기기 사이에 속도 차이가 있기 때문에 CPU를 효율적으로 사용하기 위해 큐가 존재한다.
또 CPU 스케줄링 중 먼저 들어온 것을 먼저 처리하는 FCFS도 큐와 같다고 볼 수 있다.