[자료구조] 큐(Queue) Linked list로 구현
Operation
- MakeEmpty
 - IsEmpty
 - IsFull
 - Enqueue (ItemType newItem)
 - Dequeue(ItemType& item
 
#include "ItemType.h"
template<class ItemType>
class QueType
{
public:
	QueType();
	~QueType();
	bool IsEmpty() const;
	void IsFull() const;
	void Enqueue(ItemType item);
	void Dequeue(ITemType& item);
	void MakeEmpty();
private:
	NodeType<ItemType>* qFront;
	NodeType<ItemType>* qRear;
};
template<class ItemType>
QueType<ItemType>::QueType() //constructor
{
	qFront = NULL;
	qRear = NULL;
}
template<class ItemType>
bool QueType<ItemType>::IsEmpty() const
{
	return (qFront == NULL)
}
template<class ItemType>
void QueType<ItemType>::Enqueue(ItemType newItem)
{
	NodeType<ItemType>* ptr;
	ptr = new NodeType<ItemType>;
  ptr -> info = newItem;
	ptr -> next = NULL;
	if (qRear NULL)
		qFront = ptr;
	else
		qRear-> next = ptr;
	qRear = ptr;
}
template<class ItemType>
void QueType<ItemType>::Dequeue(ItemType item)
{
	tempPtr = qFront;
	item = qFront -> info;
	qFront = qFront -> next;
	if (qFront == NULL)
		qRear = NULL; //dangling pointer(qR가 delete 후 존재하지 않는 곳을 가리키고 있을) 가능성 제거
	delete tempPtr;
}
      
Leave a comment