有3個堆疊stk0、stk1和stk2。為了區分push和pop,程式用push0、push1和push2表示3個堆疊,同樣用pop0、pop1和pop2。程式以stop0、stop1或stop2結束,顯示堆疊0、堆疊1或堆疊2的內容,然后退出。我的代碼對所有的測驗案例都運行良好,除了我下面提到的那個案例。
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<string> stk0;
stack<string> stk1;
stack<string> stk2。
while(true) {
string a;
cout<<"給出一個選項:pop, push, stop
"。
cin>> a;
if(a=="push0"/span>) {
字串b。
cingt;> b;
stk0.push(b)。
}
else if(a=="push1"/span>) {
字串b。
cingt;> b;
stk1.push(b)。
}
else if(a=="push2"/span>) {
字串b。
cingt;> b;
stk2.push(b)。
}
else if(a=="pop0"/span>) {
if(!stk0.empty() ) {
string b = stk0.top()。
stk0.pop()。
cout<<"從堆疊0彈出的元素是。"<<b<<endl。
}
else cout<<"堆疊0中的下溢
"。
}
else if(a=="pop1"/span>) {
if(!stk1.empty() ) {
string b = stk1.top()。
stk1.pop()。
cout<<"從堆疊1彈出的元素是。"<<b<<endl。
}
else cout<<"堆疊1的下溢
"。
}
else if(a==" pop2") {
if(!stk2.empty() ) {
string b = stk2.top()。
stk2.pop()。
cout<<"從堆疊2彈出的元素是。"<<b<<endl。
}
else cout<<"堆疊2的下溢
"。
}
else if(a=="stop0"/span>) {
while(!stk0.empty() ) {
cout<<stk0.top()<< endl;
stk0.pop()。
}
break;
}
else if(a=="stop1"/span>) {
while(!stk0.empty() ) {
cout<<stk1.top()< <endl;
stk1.pop()。
}
break;
}
else if(a=="stop2"/span>) {
while(!stk2.empty() ) {
cout<<stk2.top()<< endl;
stk2.pop()。
}
break;
}
}
當我輸入時
push0 Agra push1 Jaipur push0 Lucknow push2 Bhopal push1 Ajmer push1 Udaipur pop0 pop1 push2 Indore push0 Meerut stop1
我得到timeout: the monitored command dumped core error.
uj5u.com熱心網友回復:
看看你的代碼的這一部分:
else if(a=="stop1"){
while(!stk0.empty() ) {
cout<<stk1.top()<< endl;
stk1.pop()。
}
break;
}
當a為stop1時,回圈將連續旋轉,stk1將被彈出,其值將被列印,但回圈不會退出,因為條件是!stk0.empty()而不是!stk1.empty()。
你可能想這樣做:
else if(a=="stop1"/span>) {
while(!stk1.empty()) { // <- 注意從'stk0.empty()'變為'stk1.empty()'
cout<<stk1.top()<<endl。
stk1.pop()。
}
break;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331854.html
標籤:
上一篇:無法在初始化串列中捕獲
下一篇:ejs:為什么停止渲染CSS?
