问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class Stack
public:
Stack(unsignedn=10):size(n)rep_=new int[size];top=0;
Stack(Stack& s):size(s.size)
rep_=new int[size];
fbr(inti=0;i<size;i++)rep_[i]=s.rep_[i];
top=s.top;

~Stack( )delete[ ]rep_;
void push(int

A.rep一_top]=a;top++;
int pop( )--top;return rep_[top];
b001 isEmpty( )constreturn top==0;
private:
int * rep_;
unsigned size,top;

int main( )
Stack sl;
for(int i=1;i<5;i++)s1.push(i);
Stack s2(s1);
for(i=1;i<3;i++)cout<-<s2.pop( )<<’,’;
s2.pusl:(6);
s1.push(7);
while(!s2.isEmpty( ))cout<<s2.pop( )<<’,’;
return 0:

程序的输出结果是A) 4,3,2,1,

B.4,3,6,7,2,1,

C.4,3,6,2,1,

D.1,2,3,4,

答案

参考答案:C

解析: 堆栈组织元素的原则是“先进后出”,Stack s2(s1);使用复制构造函数新建s2,里面有元素1,2,3,4。for(i=1;i<3;i++)cout<<s2.pop( )<<’,’;使栈顶元素4,3出栈,s2.push(6)将6压入栈顶。while(!s2.isEmpty( )) cout<<s2.pop( )<<’,’;使元素6,2,1出栈,故答案为4,3,6,2,1。

单项选择题
问答题 简答题