亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以下是關于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)是輸出循環判定條件
意在循環

目的就是把棧中元素全部輸出,一直做出棧運算
直到???br/>是動態循環的
缺失此循環條件,只輸出當前的棧頂元素,程序結束。
是靜態的

查看完整回答
反對 回復 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 關注
  • 392 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號