为了账号安全,请及时绑定邮箱和手机立即绑定

以下是关于C++栈的问题 while(!isEmpty) cout<<pop()

以下是关于C++栈的问题 while(!isEmpty) cout<<pop()

C C++
慕桂英546537 2022-01-15 15:11:59
题目是要实现进制转换,各函数已定义template<class type>void DSeqStack<type>::convertion(){int s,n;cout<<"输入一个需要转换的数据:"<<endl;cin>>s;cout<<"输入一个需要转换成的进制:"<<endl;cin>>n;while(s!=0){Push(s%n);s=s/n;}cout<<"数据转换成"<<n<<"进制后为:"<<endl;while(!isEmpty())cout<<Pop();cout<<endl;/*cout<<"数据转换成"<<n<<"进制后为:"<<Pop()<<endl;*/}void main(){DSeqStack<int> stack(10);stack.convertion();}已经限定s!=0了,栈就一定不为空,为什么还需要while(!isEmpty),而且去掉while(!isEmpty)就只输出一个数了
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

s!=0是确定栈非空
再执行以下程序

不然空的也执行,不是浪费资源吗?而且也会最后出错。
是程序开始的断点.必须要有!

while(!isEmpty)是输出循环判定条件
意在循环

目的就是把栈中元素全部输出,一直做出栈运算
直到栈空
是动态循环的
缺失此循环条件,只输出当前的栈顶元素,程序结束。
是静态的

查看完整回答
反对 回复 2022-01-17
?
慕沐林林

TA贡献2016条经验 获得超9个赞

while(!isEmpty())
cout<<Pop();
cout<<endl;

这三句语句相当于
while(!isEmpty())
{
cout<<Pop();
cout<<endl;
}
C++中的Pop()函数和Push()一样,一次进栈只能进一个,一次出栈也只能出一个数。所以必须要循环输出

至于循环条件为什么要用IsEmpty(),是因为如果栈中的数据全部取出来的话,编译器会自动生成标识,标记栈为空,IsEmpty()得到的就是0,就跳出循环了



查看完整回答
反对 回复 2022-01-17
  • 2 回答
  • 0 关注
  • 284 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信