欢迎您访问贵州自考网!网站为考生提供贵州自考信息服务,供学习交流使用,非政府官方网站,官方信息以贵州省招生考试院(http://zsksy.guizhou.gov.cn/)为准 登录  网站导航

贵州自考网

自考热线:400-0929-629

面向对象上机考试题—关于队列

编辑整理:  贵州自考网 发表时间:  2018-05-23   【   点击数:

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

  (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;
 }
 }
}


本文标签:贵州自考 学习笔记 面向对象上机考试题—关于队列

转载请注明:文章转载自(http://www.crzkw.cn/

本文地址:http://www.crzkw.cn/xxbj/455.html


小编提示:添加【贵州自考网】招生老师微信,即可了解2024年贵州自考政策资讯自考报名入口准考证打印入口成绩查询时间以及领取历年真题资料个人专属备考方案等相关信息!

贵州自考网招生老师微信
(添加“贵州自考网”招生老师微信,在线咨询报名报考等相关问题)


贵州自考网微信公众号

贵州自考网课程中心

贵州自考网声明:

1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。

2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。

贵州自考便捷服务

  • 微信交流群
  • 微信公众号


微信扫一扫加入考生微信群
①学习交流、②考试提醒、③自考解答
④自考资料、⑤新闻通知、⑥备考指导

  • 视频课程
  • 真题下载
概率论与数理统计

概率论与数理统计

马克思主义基本原理概论

马原概论

中国近现代史纲要

中国近现代史纲要

思想道德修养与法律基础

思修03706

内科护理学(一)

内科护理学(一)

文学概论(一)

文学概论(一)