请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
2013-01-03 12:52
681 查看
请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成:
(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;
// ……
};
*/
(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 <iostream> #include <cstring> using namespace std; const int MAXN=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); 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[MAXN]; MyInteger MyI[MAXN]; MyString MyS[MAXN]; public: Queue() { for(int i=0; i<MAXN; 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==MAXN-1); } }; int 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; } } }
相关文章推荐
- 请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
- 请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(Python实现)
- PHP实现在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印
- 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
- 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印
- 实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
- 将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序从左到右,从上到下顺序依次从小到大存放),写一个函数实现之。用main函数调用。
- 实现一个基于LinkedList的队列数据结构,去除ArrayList集合中重复的元素,
- java实现百度之C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
- 数据结构学习三(一个简单的队列实现)
- 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的
- 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站
- 实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。