자료구조 : 덱(Deque) 예제문제

ROK·2022년 10월 24일
0

열혈 자료구조

목록 보기
21/30

덱(Deque) 예제문제

덱을 큐로 사용할 수 있다.
덱을 사용해서 큐를 구현한다.

  • 큐 구현을 위한 헤더파일, 소스파일을 만든다
  • 큐 구현에 사용되는 덱 헤더파일과 소스파일은 앞에서 만든 것을 그대로 사용한다.
  • 큐의 헤더파일에 필요한 함수들
    • Queue 초기화
    • Queue 비었는지 확인
    • Enqueue 연산 함수
    • Dequeue 연산 함수
    • Peek 연산 함수

헤더파일

#ifndef __DB_QUEUE_H__
#define __DB_QUEUE_H__
#include "Deque.h"

typedef Deque Queue;

void QueueInit(Queue *pq);
int QIsEmpty(Queue *pq);
void Enqueue(Queue *pq, Data data);
Data Dequeue(Queue *pq);
Data QPeek(Queue *pq);

#endif

소스파일

#include "DequeBaseQueue.h"

void QueueInit(Queue *pq)
{
   DequeInit(pq);
}

int QIsEmpty(Queue *pq)
{
   return DQIsEmpty(pq);
}

void Enqueue(Queue *pq, Data data)
{
   DQAddLast(pq, data);
}

Data Dequeue(Queue *pq)
{
   return DQRemoveFirst(pq);
}

Data QPeek(Queue *pq)
{
   return DQGetFirst(pq);
}

소스파일은 Deque.c에 이미 전부 정의되어 있기 때문에 그대로 가져와서 사용하면 된다.

소스파일 간략

메인파일

#include <stdio.h>
#include "DequeBaseQueue.h"

int main()
{
   Queue q;
   QueueInit(&q);

   Enqueue(&q, 1);
   Enqueue(&q, 2);
   Enqueue(&q, 3);
   Enqueue(&q, 4);
   Enqueue(&q, 5);

   printf("QPeek 데이터 확인 : %d \n", QPeek(&q));

   while (!QIsEmpty(&q))
   {
      printf("%d ", Dequeue(&q));
   }
   printf("\n");

   return 0;
}

결과

1 2 3 4 5
profile
하루에 집중하자

0개의 댓글