티스토리 뷰
덱을 이해하고 있다면 덱을 큐처럼 사용할 수 있다는 사실을 알고 있을 것입니다. 따라서 덱을 이용해서 큐를 구현해 보기로 합니다. 다음 두 파일을 만들어서 덱을 기반으로 하여 큐를 구현해 봅니다.
- DequeBaseQueue.h 큐의 구현을 위한 헤더 파일
- DequeBaseQueue.c 큐를 구현하고 있는 소스 파일
큐의 구현에 사용되는 덱의 헤더 파일과 소스 파일은 앞서 양방향 연결 리스트 기반으로 정의했던 것을 사용합니다. 그리고 큐의 헤더 파일에는 다음 함수들이 선언되어야 합니다.
void QueueInit(Queue* pq); //큐의 초기화
int QIsEmpty(Queue* pq); //큐가 비어 있는지 확인
void Enqueue(Queue* pq, Data data); //큐에 데이터 저장
Data Dequeue(Queue* pq); //큐에서 데이터 반환 및 소멸
Data QPeek(Queue* pq); //데이터를 소멸하지 않고 반환
제가 작성한 코드는 아래의 '더보기'를 클릭하여 확인할 수 있습니다.
만약 이해되지 않거나, 추가 설명이 필요하다면 언제든지 물어보길 바랍니다.
더보기
어차피 이미 만들어진 덱을 이용해서 큐를 구현하는 것이기 때문에 다음과 같이 덱을 이용하는 간단한 형태로 구현해봤습니다.
//DequeBaseQueue.h 헤더 파일로 저장
#ifndef DEQUEBASEQUEUE_H
#define DEQUEBASEQUEUE_H
#include "DLLBDeque.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
//DequeBaseQueue.c
#include "DequeBaseQueue.h"
#include <stdio.h>
#include <stdlib.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)
{
DQRemoveFirst(pq);
}
Data QPeek(Queue* pq)
{
DQGetFirst(pq);
}
'공부 일지 > 자료구조 공부 일지' 카테고리의 다른 글
Chapter 08. 이진 트리의 구현 (0) | 2021.03.16 |
---|---|
Chapter 08. 트리의 개요 (0) | 2021.03.16 |
Chapter 07. 덱(Deque)의 이해와 구현 (0) | 2021.03.16 |
Chapter 07. 큐의 활용 (16) | 2021.03.15 |
Chapter 07. 큐의 연결 리스트 기반 구현 (0) | 2021.03.15 |