队列的顺序存储结构与操作

来源:互联网 发布:c语言编程序 编辑:程序博客网 时间:2024/04/26 20:05

 #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;
}

原创粉丝点击