스택(Stack) & 큐(Queue) & 데큐(Double-ended Queue)
스택(Stack)
특징
- 마지막에 저장한 데이터를 가장 먼저 꺼내는 후입선출(LIFO, Last In First Out) 구조
- 입출력이 모두 한 방향으로 이루어지며, 입출력이 이루어지는 곳을 Top이라 한다.
- 데이터를 삽입하는 것을 Push, 꺼내는 것을 Pop이라고 한다.
- overflow : 스택의 모든 공간을 사용중일 때 더 이상 데이터를 삽입할 수 없음
- underflow : 스택 내 사용중인 공간이 없을 경우 삭제가 불가능
용도
- 지역변수 저장, 함수 호출, 인터럽트 처리 등
큐(Queue)
특징
- 처음 저장한 데이터를 가장 먼저 꺼내는 선입선출(FIFO, First In First Out) 구조
- 입출력이 양방향으로 이루어지며, 가장 먼저 삽입된 공간을 가리키는 포인터를 Front, 가장 마지막에 삽입된 공간을 가리키는 포인터를 Rear라 한다.
- 삽입은 Enqueue, 삭제는 Dequeue 라고 한다.
용도
- 운영체제 작업 스케줄링, 인쇄작업 대기 목록 등
데큐(Double-ended Queue)
특징
- 큐와 스택의 장점을 합쳐놓은 자료구조
- 양쪽 끝에서 삽입과 삭제가 모두 가능
- Scroll(입력제한데크) : 입력이 한쪽 끝으로만 가능하도록 설정한 데크
- Shelf(출력제한데크) : 출력이 한쪽 끝으로만 가능하도록 설정한 데크

데큐에서 사용되는 함수

참고