Front와 Rear의 적절한 위치 변환을 통해 구현..
단점 : 디큐를 이용하여 삭제 후 할당공간이 있음에도 불구하고 없다고 나옴..그래서 원형큐를 사용함..
일단 배열로 구성한 선형큐부터..
#include<iostream>
#include<conio.h>
using namespace std;
class ArrayQueueNode
{
public:
char element;
ArrayQueueNode()
{
element=NULL;
}
ArrayQueueNode(char c)
{
element=c;
}
};
class ArrayQueue
{
public:
int MaxCount;
int CurrentCount;
int Front;
int Rear;
ArrayQueueNode* pElement;
public:
ArrayQueue(int MaxNum)
{
MaxCount=MaxNum;
CurrentCount=0;
Front=0;
Rear=0;
pElement=new ArrayQueueNode[MaxCount];
}
~ArrayQueue()
{
cout << "소멸자 실행 메모리 해제" << endl;
delete [] pElement;
}
void EnQueue(ArrayQueueNode node)
{
if(CurrentCount!=MaxCount && Rear!=MaxCount)
{
pElement[Rear]=node;
Rear++;
CurrentCount++;
cout << "인큐성공" << endl;
}
else
{
cout << "큐의 자리가 없습니다." << endl;
}
}
void Dequeue()
{
if(CurrentCount!=0)
{
ArrayQueueNode* temp;
temp=&pElement[Front];
cout << "디큐의 값 ";
cout << temp->element << endl;
Front++;
CurrentCount--;
cout << "큐의 디큐 완료" << endl;
cout << endl;
}
else
{
cout << "큐의 NULL 상태" << endl;
}
}
ArrayQueueNode* Peek()
{
}
void ShowAllQueue()
{
cout << CurrentCount << endl;
for(int i=Front;i<MaxCount;i++)
{
cout << i << "번째 출력 " ;
cout << pElement[i].element << endl;
}
}
};
int main()
{
ArrayQueueNode A('a');
ArrayQueueNode B('b');
ArrayQueueNode C('c');
ArrayQueue queue(3);
queue.EnQueue(C);
queue.EnQueue(B);
queue.EnQueue(A);
queue.ShowAllQueue();
cout << "디큐 실행후 " << endl;
queue.Dequeue();
queue.ShowAllQueue();
queue.Dequeue();
queue.ShowAllQueue();
queue.EnQueue(C);
getch();
return 0;
}