#include
#include
typedef int SElemType;
#define max 10
typedef struct
{
SElemType *base;
SElemType *top;
SElemType stacksize;
}SqStack;
int InitStack(SqStack *S)//建立栈
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
if (!S->base)
return 0;
S->top=S->base;
S->stacksize=max;
return 1;
}
int Push(SqStack &S,SElemType e)//元素入栈
{
//SElemType Temp=e;
S.base=&e;
S.top++;
return 1;
}
int GetTop(SqStack &S,SElemType e)//取顶元素
{
SElemType Temp;
Temp=*S.base;
e=Temp;
return e;
}
void main()
{
SElemType InitStackReturn,PushReturn,IntZhi,GetReturn;
SqStack B;
InitStackReturn=InitStack (&B);
if (InitStackReturn==1)
printf("InitStack Success!!\n");
scanf("%d",&IntZhi);
PushReturn=Push(B,IntZhi);
if (PushReturn==1)
printf("Push Success!!\n");
GetReturn=GetTop(B,IntZhi);
printf("%d\n",GetReturn);
}
这样运行通过了,但没明白你的base是干什么的。
把 S.base=&Temp;改为:*S.base=Temp;。是把temp的值赋给了s.base所指位置,而不是把temp的地址赋给s.base这个指针。