编译的确是没错,但不知道你是要什么效果的。如果需要看到输出的信息就可以像下面的改一下了。
#include
using namespace std;
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType stack[MaxSize];
int top;
}istack;
void Initstack(istack &st)
{
st.top=-1;
}
void pushstack(istack &st)
{
if(st.top==MaxSize)
cout<<"满栈"<
{
st.top++;
cout<<"请输入需要入栈的数"<
}
}
void popstack(istack &st)
{
if(st.top==-1)
cout<<"空栈"<
{
cout<<"弹出的栈顶元素为:"<
}
}
void printstack(istack &st)
{
int i;
if(st.top==-1)
cout<<"空栈"<
{
for(i=0;i<=st.top;i++)
cout<
}
void main()
{
istack st;
int n;
Initstack(st);
cout<<"请输入您想做的操作"<
while(n!=4)
{
switch(n)
{
case 1:{
pushstack(st);
cout<<"请输入您想做的操作"<
break;
case 2:{
popstack(st);
cout<<"请输入您想做的操作"<
break;
case 3:{
printstack(st);
cout<<"请输入您想做的操作"<
break;
default:cout<<"输入错误,请重新输入"<
cin>>n;
}
}
遍历栈的时候i的初值应该为0.你试试是不是要这结果...
输出栈元素的时候有问题,如果你的栈只有一个元素,那么你这个函数printstack这个函数是输出任何信息的!!!而且popstack这个函数有问题,你假设你的栈中有一百个元素,此时你的top应该是99(对吧),而你判断是否为满的条件是top==100,所以当真的超栈的话,你应该是程序立刻别强迫停止!建议你用top来做为一个计数器,记录栈中的元素,这个设计起来思路会更清晰!