본문 바로가기

CS

큐란?

가장 처음에 들어간 데이터가 처음으로 꺼내지는 구조를 가진 자료구조 입니다. (FIFO)

 

 

큐의 ADT

큐란 자료구조를 구현하기 전에 해당 자료구조의 ADT를 정의할 필요가 있습니다.

1. First in First Out(FIFO) : 처음에 들어간 값이 첫 번째로 나오는 구조

2. 탐색, 삽입, 삭제를 구현할 것.

3. 큐의 전방, 후방을 나타내는 변수를 선언할 것.

 

 

큐의 ADT 선언

큐의 ADT를 참고하여 클래스로 선언 해보겠습니다. 

#include "pch.h"
#include <iostream>
using namespace std;

template <typename T>
struct Node
{
	T		 value;
	Node<T>* prevNode;
	Node<T>* nextNode;
};

template <typename T>
class CustomQueue
{
public:
	CustomQueue()
		, m_front(nullptr)
		, m_rear(nullptr)
	{

	}
public:
	// 1. 탐색
	bool search(T data);

	// 2. 삽입
	void push(T data);

	// 3. 삭제
	void pop();

	// 4. 가장 앞에 있는 값 추출
	T front();

	// util 함수들
	bool empty();
	int  size();

private:
	Node* m_front;
	Node* m_rear;
	

};

 

코드 분석

일단 ADT에서 생각했던 부분을 위주로 선언을 해두었습니다.

위와 같이 선언된 큐는 기본적인 요소와 기능을 갖추고 있으며 구현하는 사람에 따라 요소와 기능의 선언이 달라질 수 있습니다. 위의 선언에서 요소와 기능을 중점으로 간단하게 설명해보겠습니다.

 

요소

1. m_front    :  가장 앞에 있는 노드를 나타내는 포인터입니다.

2. m_rear     :  가장 뒤에 있는 노드를 나타내는 포인터입니다.

                        m_rear는 가장 먼저 삽입한 객체를 반환하기 위한 포인터입니다.                    

 

기능

1. search : 탐색 기능입니다.

2. push : 삽입 기능입니다.

3. pop : 삭제 기능입니다.

4. front : 가장 먼저 삽입한 노드의 값을 반환하는 함수입니다.

 

 

'CS' 카테고리의 다른 글

함수의 호출  (0) 2025.02.16
스택  (0) 2025.01.26
리스트의 종류 (링크드, 더블 링크드, 환형 링크드)  (0) 2025.01.19
리스트  (0) 2025.01.12