#include <iostream>
using namespace std;
template<class T>
class Test
{
public:
Test();
void InterFace();
void GetIntoQue();
void CleanQuene();
void GetQueueHead();
void DeleteQueueHead();
void Exit();
private:
T m_t[100];
int m_nHead;
int m_nTail;
int m_nSum;
};
template<class T>
Test<T>::Test()
{
memset(m_t, -1, sizeof(m_t));
m_nSum = 0;
m_nTail = 0;
m_nHead = 0;
}
template<class T>
void Test<T>::GetIntoQue()
{
// cout << "please input GetInto Word" << endl;
T temp;
cin >> temp;
if (m_nSum > 100)
{
cout << "Queue Full" << endl;
}
m_t[m_nTail++] = temp;
m_nSum++;
InterFace();
}
template<class T>
void Test<T>::CleanQuene()
{
// memset(m_t, -1, sizeof(m_t));
m_nTail = m_nHead = 0;
InterFace();
}
template<class T>
void Test<T>::GetQueueHead()
{
if (m_nHead < m_nTail)
{
cout << m_t[m_nHead] << endl;
}
else
{
cout << "None" << endl;
}
InterFace();
}
template<class T>
void Test<T>::DeleteQueueHead()
{
if (m_nHead < m_nTail)
{
cout << m_t[m_nHead] << endl;
m_nHead++;
m_nSum--;
}
else
{
cout << "None" << endl;
}
InterFace();
}
template<class T>
void Test<T>::Exit()
{
exit(1);
}
template<class T>
void Test<T>::InterFace()
{
// cout <<"please input your server" << endl;
char szTemp;
cin >>szTemp;
switch (szTemp)
{
case 'E' | 'e':
GetIntoQue();
break;
case 'C' | 'c':
CleanQuene();
break;
case 'G' | 'g':
GetQueueHead();
break;
case 'D' | 'd':
DeleteQueueHead();
break;
case'Q' | 'q':
Exit();
default:
break;
}
}
int main()
{
Test<char> t1;
t1.InterFace();
return 0;
}