본문으로 바로가기

[자료구조] 스택과 큐

category 알고리즘/자료구조 2020. 1. 22. 03:14

스택과 큐의 구조와

데이터 추가,삭제 동작 과정에 대한

기본적인 설명입니다.


1. 스택이란?

스택은 데이터를 일시적으로 저장하기 위한 자료구조이다.
입출력 순서는 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 후입선출의 순서를 따른다.

스택 구조

스택을 배열로 구현한다면 아래와 같은 구조일 것이다.

배열로 구현한 스택 구조

  • max : 스택의 용량, 스택에 쌓을 수 있는 최대 데이터 수를 나타내는 필드

  • ptr : 스택에 쌓여 있는 데이터 수를 나타내는 필드, 스택 포인터

2. 스택 데이터 추가, 삭제

1) 데이터 추가 - push

스택이 가득차있는 경우 값을 추가하면 배열의 공간을 넘기 때문에 값을 넣을 수 없다.
전달받은 데이터를 넣을 수 있으면 스택의 마지막 값 뒤에 저장하고, 스택 포인터를 증가 시켜준다.

2) 데이터 삭제 - pop

스택이 비어 있을 경우 뺄 수 있는 값이 없기 때문에 동작이 수행 될 수 없다.

스택이 비어있지 않다면 스택의 꼭대기 값을 제거하고 그 값을 반환한다.

3. 큐란?

큐는 데이터를 일시적으로 쌓아 두기 위한 자료구조이다.
입출력 순서는 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출의 순서를 따른다.

큐의 구조

생활에서 볼 수 있는 큐의 예시,

  • 은행 창구에서의 차례를 기다리는 대기
  • 마트 계산을 위해 기다리는 대기열

4. 큐 데이터 추가, 삭제

1) 데이터 추가 - enque

rear(끝, 꼬리)의 데이터가 저장된 요소 다음에 데이터를 추가하는 메서드이다.
큐가 가득차있는 경우 enque할 수 없다.
전달받은 데이터를 넣을 수 있으면 큐의 꼬리값 다음에 저장한다.
메서드의 반환값은 enque한 값이다.

2) 데이터 삭제 - deque

큐가 비어 있는 경우 deque 할 수 없다.

큐가 비어 있지 않다면 front에 위치한 맨 앞의 요소를 꺼낸 다음

그 이후의 요소를 앞으로 옮기는 메서드이다.

'알고리즘 > 자료구조' 카테고리의 다른 글

[자료구조] 그래프 (Graph)  (0) 2020.01.22
[자료구조] 트리 (Tree)  (0) 2020.01.22
[자료구조] 연결리스트  (0) 2020.01.22
[자료구조] 배열  (0) 2020.01.22
[자료구조] 자료구조란?  (0) 2020.01.22