面向对象上机考试题—关于队列
请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成:
(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<<" 请输入整数:";
isMyI.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<<" 请输入字符串:";
isMyS.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<<"请选择您的*作:";
cins;
switch(s)
{
case 1: cinmy1; queue.add(my1); break;
case 2: cinmy2; queue.add(my2); break;
case 3: queue.head(); break;
case 4: queue.tail(); break;
case 5: queue.del(); break;
default: s=0; break;
}
}
}
【面向对象上机考试题—关于队列】相关文章:
热点推荐:
工学
- 2020-11-17【工学】2012年自考“工程项目管理”单选练习(9)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(1)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(18)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(34)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(35)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(38)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(41)
- 2020-11-17【工学】2012年自考“互联网及其应用”串讲笔记(1)
其他最新资讯
- 2023-12-29【自考政策】广西自考网络助学平台新增61门课程
- 2020-12-04【免考问题】哪些证书可以免考自考相关课程?
- 2020-12-04【免考问题】自考免考有哪些条件?
- 2020-12-04【综合问题】自考本科文凭有用吗?
- 2020-12-04【综合问题】自考本科需要考多少门课?
- 2020-11-17【综合问题】江苏省高等教育自学考试网上报名常见问题及解答
- 2020-11-17【经济学】2012年自考“中国税制”笔记串讲(8)
- 2020-11-17【自考政策】全国自考办领导:未来自考将大力发展网络助学
网友关注
- 【教材大纲】高教自考全国统考课程简介:植物生理学
- 【教材大纲】高教自考全国统考课程简介:农业推广学
- 【教材大纲】自学考试刑事诉讼原理与实务(一)命题说明
- 【教材大纲】高教自考全国统考课程简介:植物学(二)
- 【教材大纲】高自考全国统考课程简介:种子生产与经营管理
- 【教材大纲】高教自考全国统考课程简介:设施规划与设计
- 【教材大纲】自考全国统考课程简介:微生物学与免疫学基础
- 【教材大纲】自学考试烹饪原料学(二)课程命题说明
网友关注视频
- 化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
- 【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
- 第8课 对称剪纸_第一课时(二等奖)(沪书画版二年级上册)_T3784187
- 第19课 我喜欢的鸟_第一课时(二等奖)(人美杨永善版二年级下册)_T644386
- 外研版英语三起5年级下册(14版)Module3 Unit1
- 冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
- 沪教版牛津小学英语(深圳用)五年级下册 Unit 1
- 七年级下册外研版英语M8U2reading