[设为首页]
中国-东莞·教育导航
  主页 | 教育资讯 | 推荐课程 | 公开课 | 考试 | 资格认证 | 外语 | 硕士考研 | 自考成考 | IT培训 | 金融财会 | 名校 | 学习资料
  导航:首页 - 面向对象上机考试题—关于队列

面向对象上机考试题—关于队列
作者:城市学习网 来源:xue.net 更新日期:2007-12-15 阅读次数:
请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成: 

  (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() 
 friend istream &operator>>(istream &is, MyInteger &MyI); 
 int Get() {return a;}; 
 void ShowMe() 
  
}; 
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() 
  
}; 
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{ 
   cout<<" 队列的头元素为"; 
   Elm[0]->ShowMe(); 
  } 
 } 
 void del() 
 { 
  if(empty()) cout<<"队列为空"<<endl;  
  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 "<<endl; 
  cout<<" 1: 整数进队列;"<<endl; 
  cout<<" 2: 字符串进队列;"<<endl; 
  cout<<" 3: 显示队列头元素;"<<endl; 
  cout<<" 4: 显示队列尾元素"<<endl; 
  cout<<" 5: 出队列;"<<endl; 
  cout<<" 6: 退出程序"<<endl; 
  cout<<"--------------------------------------"<<endl; 
  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; 
  } 
 } 

报 名 此 课 程 / 咨 询 相 关 信 息
【预约登门】 【网上咨询】 【订座试听】 【现在报名】
课程名称
面向对象上机考试题—关于队列
真实姓名
* 性 别
联系电话
* E-mail:
所在地区
咨询内容

      

相关文章:

Copyright© 2014 www.dgedu.com.cn 东莞教育在线 版权所有
中国·东莞
粤ICP备06023013号