您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
面向对象上机考试题(2)——关于堆栈
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000

1.请实现一个栈,既可以存放整数,又可以存放字符串。简单的说,栈是一种数据结构,按照后进先出的顺序管理进、出栈的元素。本题要求完成:
(1) 实现描述栈的类Stack,其中定义了栈的大小Size(即栈中可以存放的元素个数),并包括进栈函数Push,出栈函数Pop和显示栈顶元素的函数Top。
(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<<" 整数:"<}
};

istream &operator>>(istream &is, MyInteger &MyI)
{ 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)
{ is>>MyS.s;
return is; }

class stack
{ MyString MyS[max];
MyInteger MyI[max];
int top;
public:
stack() {top=-1;}
void push(MyInteger &My)
{ MyI[++top]=My; }

void push(MyString &My)
{ MyS[++top]=My; }

void Top()
{
if (empty()) cout<<"栈为空"<else MyI[top].ShowMe();
}
void Tops()
{
if (empty()) cout<<"栈为空"<else MyS[top].ShowMe();
}

void pop()
{ MyI[top--].ShowMe(); }

void pops()
{ MyS[top--].ShowMe(); }

bool empty()
{ return (bool)(top==-1); }

bool full()
{ return (bool)(top==max-1); }
};

int main(int argc, char* argv[])
{ MyInteger My1;
MyString My2;
stack st1, st2;
int i, j;

cout<<"请输入要进栈整数个数:";
cin>>j;
cout<<"请输入"<for (i=0; i{ cin>>My1;
st1.push(My1);
}
cout<<"栈顶元素为:";
st1.Top();
cout<<"请输入要出栈的元素个数:";
cin>>j;
cout<<"依次出栈元素为:"<for (i=0; ist1.pop();
cout<<"出栈后栈顶元素为:";
st1.Top();
cout<<"请输入要进栈的字符串个数:";
cin>>j;
cout<<"请输入"<for (i=0; i{
cin>>My2;
st2.push(My2);
}
cout<<"栈顶元素为:";
st2.Tops();
cout<<"请输入要出栈的元素个数:";
cin>>j;
cout<<"依次出栈元素为:"<for (i=0; ist2.pops();
cout<<"出栈后栈顶元素为:";
st2.Tops();

return 0;
}

下一篇:面向对象上机考试题(1)——关于宠物进笼

Anne的宠物小屋有12个笼子,每个笼子可以放不同的动物,但只能放1只或0只,包括
猫Cat,狗Dog,蛇Snake.
1,实现一个简单的管理系统,可增加、删除笼子中的宠物,查询每个笼子中存放的
宠物类型,(包括笼子为空的情况),统计笼中宠物的种类和数量.
2,定义描述宠物小屋的类shelves,其中有12笼子用于存放各种宠物.
3,定义虚拟基类Animal,包括纯虚函数ShowMe,显示每个宠物的情况,包括类型、颜色、
体重和喜爱的食物。
4,定义派生类Cat,Dog,Snake,具体实现上述纯虚...[查看详情]

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:面向对象上机考试题(4)—关于队列
下一篇:面向对象上机考试题(1)——关于宠物进笼
 相关新闻
·软件水平考试网络工程师英语复习练习题8套·软件水平考试网络工程师英语复习练习题10套
·软件水平考试网络工程师英语复习练习题9套·网络工程师训练资料——60道典型选择题及答案
·网络工程师经典模拟试卷·网络工程师-填空练习题
·计算机软件水平考试网络程序员考试练习题·计算机软件水平考试网络设计师模拟试题
·网络工程师试题及详细解析——局域网篇·网络工程师基础训练题
·网络工程师综合练习一·助理电子商务师考试试题(理论)
·C语言上机考试试题(2002年5月11日)·全国软件水平程序员考试部分例题
·北大“高级语言程序设计”上机考试题(9月11日)·面向对象上机考试题(1)——关于宠物进笼
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
·2008年中级会计职称《经济法》试题及答案
·2008年注册会计师考前模拟试题参考答案之
·2008年注册会计师考前模拟试题之《会计》
·2008年注册会计师考前模拟试题之《税法》
·2008年高校招生全国统考理数试题(四川延
·2008年全国高考物理科试题参考答案(上海
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例