问答题

请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。
Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:
公有成员函数 功能
push 入栈:在栈顶位置添加一个元素
pop 退栈:取出并返回栈顶元素
ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。
请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:
a,b,c
c,b,a
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include <iostream>
using namespace std;
class Stack
public:
virtual void push (char c)=0;
virtual char pop()=0;
;
class ArrayStack:public Stack
char*p;
int maxSize;
int top;
public:
ArrayStack(int s)

top=0;
maxSize=s;
//********found********
p=______;
~ArrayStack()

//********found********
______;

void push (char c)

if (top==maxSize)
cerr<<"Overflow! \n";
return;

//********found********
______;
top++;

char pop ()

if (top==0)
cerr<<"Underflow! \n";
return’\0’;

top--;
//********found********
______;

;
void f (Stack& sRef)

char ch[]=’a’,’b’,’c’;
cout<<ch[0]<<","<<ch[1]<<","<<ch[2]<<endl;
sRef.push(ch[0]);sRef.push(ch[1]);sRef.push(ch[2]);
cout<<sRef.pop()<<endl;

int main ()

ArrayStack as(10);
return 0;

【参考答案】

(1)new char[s]
(2)delefe[]p
(3)p[top]=c
(4)return p[top]