我无法从中获得输出

i can't get an output from this

本文关键字:输出      更新时间:2023-10-16
#include<iostream>
using namespace std;
class stack
{
int size=10;
int stack[size]={0}, value=0, top;
top=size;
public:
void push(int v)
{
if(top==0)
cout<<"nstack is fulln";
else
{--top;
stack[top]=v;}
}
void pop()
{
if(top==size)
cout<<"nstack is emptyn";
else
{top++;
stack[top];
stack[top-1]=0;
}
}
void display()
{
if(top==size)
cout<<"nstack emptyn";
else
{
for(int i=top;i<size-1;i++)
{
cout<<stack[i];
}
}
}
};
int main()
{
stack s;
char t;
int value,ch;
do
{
cout<<"n1.pushn";
cout<<"n2.popn";
cout<<"n3.displayn";
cout<<"enter choice:n";
cin>>ch;
switch(ch)
{
case 1:cout<<"nenter the value to be pushedn";
cin>>value;
s.push(value);
break;
case 2:s.pop();
break;
case 3:s.display();
break;
default:
cout<<"nwrong choicen";
}
cout<<"ndo u want to retryn";
cin>>t;
}while(t=='y' || t=='Y');
return 0;
}

对发生的错误的最简单修复是将int size=10;更改为static const int size=10;。 在此之后,除了发生stack[top];为空语句的警告外,display循环中for(int i=top;i<size-1;i++)应该for(int i=top;i<size;i++)for(int i=top;i<=size-1;i++)的循环中也存在逻辑错误。

正如Tomáš Zahradníček所回答的那样,你需要修复一些东西来编译你的代码(使用-std=c++11(。

我在display方法中使用了for(int i=top; i<size; ++i)。我还补充说,您的pop方法可以简单地执行top++;而不会覆盖堆栈。

无论如何,关于您在 COUT 上不打印任何内容的问题:您显然尝试在堆栈中推送 1 个项目,但没有尝试使用 2 个项目,这将指向错误的行(for循环(。