您现在的位置: 汕头自考网 >> 串讲笔记 >> 工学类 >> 正文
  • 面向对象上机考试题—关于队列
  • 发布日期时间:2007-1-14  来源:网络   点击数:  作者:佚名

  请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成:

  (1) 实现描述队列的类Queue,其中定义了队列的大小Size(即队列中可以存放的元素个数),并包括进队列函数Add,出队列函数Delete、显示队列头部元素的函数Head和显示队列尾部元素的函数Tail.

  (2) 定义基类Element,至少包含纯虚函数ShowMe.

  (3) 从基类Element中派生整数类MyInteger和字符串类MyString, 具体实现上述纯虚函数ShowMe,显示该元素的类型和相应的值。

  (4) 重载输入“>>”*作符,使得可以通过cin直接读入上述整数类和字符串类的对象值。

  (5) 编写main函数,测试上述所要求的各种功能,即可以根据菜单命令增加队列元素、删除队列元素、显示队列头部元素和队列尾部元素,其中的元素可以是整数和/或字符串。

  提示:

  虚拟基类Element的定义至少包括以下纯虚函数ShowMe.

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<<"整数:"<<a<<endl; }
};
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<<"字符串:"<<s<<endl; }
};
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; i<max; i++)
   Elm[i]=NULL;
  size=-1;
 }
 void add(MyInteger &My)
 {
  if (full()) cout<<"队列已满"<<endl;
  else {
   MyI[++size]=My;
   Elm[size]=new MyInteger;
   Elm[size]=&MyI[size];
  }
 }
 void add(MyString &My)
 {
  if (full()) cout<<"队列已满"<<endl;
  else {
   MyS[++size]=My;
   Elm[size]=new MyString;
   Elm[size]=&MyS[size];
  }
 }
  
 void tail()
 { if(empty()) cout<<"队列为空"<<endl; 
  else{
   cout<<" 队列的尾元素为";
   Elm[size]->ShowMe();
  }
 }
 void head()
 { 
  if(empty()) cout<<"队列为空"<<endl;
  else{

[1] [2] 下一页

文章转载请注明来源于:汕头自考网