出栈的时候 出错 求大神解答 !!!急
#include <iostream>
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
using namespace std;
typedef char ElemType;
typedef struct {
ElemType data[MaxSize];//存取栈中的数据元素
int top;//栈顶指针,即存放栈顶元素在data数组中的下标
}SqStack;//顺序栈类型
void InitStack(SqStack *&s)
{
s=(SqStack*)malloc(sizeof(SqStack));//分配一个顺序栈空间,首地址存放在s中
s->top=-1;//栈顶指针置为-1
}
void DestoryStack(SqStack *&s)
{
free(s);
}
bool StackEmpty(SqStack *s)
{
return ( s->top == -1 );
}
bool Push(SqStack *&s,ElemType e)
{
if(s->top==MaxSize-1)//栈满的情况,即栈上溢出
return false;
s->top++;//栈顶指针增1
s->data[s->top]=e;//元素e放在栈顶指针处
return true;
}
bool Pop(SqStack *&s,ElemType &e)
{
if(s->top==-1)//栈为空的情况,即栈下溢出
return false;
e=s->data[s->top];//取栈顶元素
s->top--;//栈顶指针减1
return true;
}
bool GetTop(SqStack *&s,ElemType &e)
{
if(s->top==-1)//栈为空的情况,即栈下溢出
return false;
e=s->data[s->top];//取栈顶元素
return true;
}
int main()//主函数
{
int n;
int i;
ElemType e;
SqStack *sk;
fflush(stdin);
InitStack(sk);
printf("(1)栈s已被初始化!\n");
printf("(2)栈s");
if(StackEmpty(sk))
printf("为空栈!");
else
printf("不为空栈!");
printf("\n");
printf("(3)请输入元素的个数:");
scanf("%d",&n);
printf("请输入要入栈的元素:");
for(i=0;i<n;i++)
{
scanf("%c",&e);
Push(sk, e);
}
if(Push(sk,e))
printf("入栈成功");
else{
printf("入栈不成功");
}
printf("\n");
printf("(4)栈s");
if(StackEmpty(sk))
printf("为空栈!");
else{
printf("不为空栈!");
}
printf("\n");
printf("(5)栈s的出栈序列为");
while(!(StackEmpty(sk)))
{
Pop(sk,e);
printf("%c",e);
}
printf("\n");
printf("(6)栈s");
if(StackEmpty(sk))
printf("为空栈!");
else{
printf("不为空栈!");
}
printf("\n");
DestoryStack(sk);
printf("(7)栈s已被释放!");
}
出栈的时候应该是edcba 为什么是这样呢 求大神解答!