请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成:  (1) 实现描述队列的类Queue,其中定义了队列的大小Size(即队列中可以存放的元素个数)  ,并包括进队列函数Add,出队列函数Delete、显示队列头部元素的函数Head和显示队列尾部元素的函数Tail。  (2) 定义基类Element,至少包含纯虚函数ShowMe。  (3) 从基类Element中派生整数类MyInteger和字符串类MyString, 具体实现上述纯虚函数ShowMe,显示该元素的类型和相应的值。  (4) 重载输入“>>”*作符,使得可以通过cin直接读入上述整数类和字符串类的对象值。  (5) 编写main函数,测试上述所要求的各种功能,即可以根据菜单命令增加队列元素、删除  队列元素、显示队列头部元素和队列尾部元素,其中的元素可以是整数和/或字符串。  提示:  虚拟基类Element的定义至少包括以下纯虚函数ShowMe,  这是我24号的考题!  class Element  {  // ……  public:  virtual void ShowMe () = 0;  // ……  }; 
  */ 
 
 
  #include "stdafx.h"  #include "iostream.h"  #include "string.h"  const max=1000;  #define NULL 0 
  class Element  { public:  virtual void ShowMe () = 0;  }; 
  class MyInteger:public Element  { int a;  public:  MyInteger(){a=0;}  friend istream &operator>>(istream &is, MyInteger &MyI);  int Get() {return a;};  void ShowMe()  { cout<<"整数:"<};  istream &operator>>(istream &is, MyInteger &MyI)  {  cout<<" 请输入整数:";  is>>MyI.a;  return is; } 
  class MyString:public Element  { char s[100];  public:  friend istream &operator>>(istream &is, MyString &MyS);  void ShowMe()  { cout<<"字符串:"<};  istream &operator>>(istream &is, MyString &MyS)  {  cout<<" 请输入字符串:";  is>>MyS.s;  return is;  } 
  class Queue  { int size;  Element *Elm[max];  MyInteger MyI[max];  MyString MyS[max];  public:  Queue(){  for (int i=0; iElm[i]=NULL;  size=-1;  }  void add(MyInteger &My)  {  if (full()) cout<<"队列已满"<else {  MyI[++size]=My;  Elm[size]=new MyInteger;  Elm[size]=&MyI[size];  }  } 
  void add(MyString &My)  {  if (full()) cout<<"队列已满"<else {  MyS[++size]=My;  Elm[size]=new MyString;  Elm[size]=&MyS[size];  }  } 
  void tail()  { if(empty()) cout<<"队列为空"<else{  cout<<" 队列的尾元素为";  Elm[size]->ShowMe();  }  }  void head()  {  if(empty()) cout<<"队列为空"<else{  cout<<" 队列的头元素为";  Elm[0]->ShowMe();  }  } 
  void del()  {  if(empty()) cout<<"队列为空"<else{  cout<<" 出队列的元素为";  Elm[size--]->ShowMe();  }  }  bool empty() 
  {  return (bool)(size==-1);  }  bool full()  {  return (bool)(size==max-1);  }  }; 
  void main()  { MyInteger my1;  MyString my2;  Queue queue;  int s=1;  while(s)  {  cout<<"Please select 1-6 "<cout<<" 1: 整数进队列;"<cout<<" 2: 字符串进队列;"<cout<<" 3: 显示队列头元素;"<cout<<" 4: 显示队列尾元素"<cout<<" 5: 出队列;"<cout<<" 6: 退出程序"<cout<<"--------------------------------------"<cout<<"请选择您的*作:";  cin>>s;  switch(s)  {  case 1: cin>>my1; queue.add(my1); break;  case 2: cin>>my2; queue.add(my2); break;  case 3: queue.head(); break;  case 4: queue.tail(); break;  case 5: queue.del(); break;  default: s=0; break;  }  }  }  |