본문 바로가기

Programming/DS SorceCode

LinkedQueue.h : 연결된 큐 클래스

#pragma once

#ifndef ___LinkedQueue

#define ___LinkedQueue

//LinkedQueue.h : 연결된 큐 클래스


#include "Node_Int.h"

class LinkedQueue {

Node_Int* front; //가장 먼저 삽입된 노드의 포인터

Node_Int* rear; //마지막에 삽입된 노드의 포인터

public:

LinkedQueue() : front(NULL), rear(NULL) {}

~LinkedQueue() { while (!isEmpty()) delete dequeue(); }

bool isEmpty() { return front == NULL; }


//삽입 연산 : 연결된 큐의 맨 뒤에 노드 삽입

void enqueue(Node_Int* p) {

if (isEmpty()) front = rear = p;

else {

rear->setLink(p);

rear = p;

}

}

//삭제 연산 : 연결된 큐의 맨 앞 노드를 삭제

Node_Int* dequeue() {

if (isEmpty()) return NULL;

Node_Int* p = front;

front = front->getLink();

if (front == NULL) rear = NULL;

return p;

}

Node_Int* peek() { return front; }

void display() {

printf("[큐 내용] : ");

for (Node_Int* p = front; p != NULL; p = p->getLink())

p->display();

printf("\n");

}

};

#endif // !___LinkedQueue