PersesTitan(페르) 기술블로그

[C] 선형큐 구조 정리 본문

Language/C

[C] 선형큐 구조 정리

PersesTitan(페르) 2023. 12. 17. 18:17

해당 글에서는 동작 구조를 중심으로 작성하였기 때문에 포화상태 및 공백 상태를 확인하는 코드는 작성하지 않았다는 점 참고 바랍니다.

기본 구조

(element는 저장할 데이터 타입입니다.)

typedef struct {
    int front;
    int rear;
    element data[SIZE];
} QueueType;

front: 현재 위치를 나타냅니다.

rear: 현재 저장되어 있는 아이템 갯수를 나타냅니다.

data: 아이템이 저장되는 위치를 나타냅니다.

선형큐는 초기 값으로 front, rear는 -1값으로 시작하며 한번 할당된 공간은 다시 사용할 수 없으므로 SIZE크기를 다 사용하면 더 이상 사용할 수 없는 특징을 가지고 있습니다.

데이터 추가

PP언어라서 *q를 넘겨줘야한다. 이런 거 볼때마다 C언어에 정이 떨어진다.

아이템 갯수(rear)를 1 증가하고 해당 위치에 값을 넣어주는 작업입니다.

void enqueue(QueueType *q, element item) {
    q->data[++(q->rear)] = item;
}

 

데이터 추출

선형큐는 오래된 순서대로 값을 가지고 오게 됩니다.

현재 위치(front)를 1증가하고 해당 위치의 값을 반환하게 됩니다.

element dequeue(QueueType *q) {
    return q->data[++(q->front)];
}