顺序栈出错
# include<stdio.h># include<stdlib.h>
# define StackInitSize 100
# define Increment 10
typedef struct
{
int * base;
int * top;
int StackSize;
}SqStack;
SqStack InitStack(SqStack *S)
{
(*S).base=(int *)malloc(StackInitSize*sizeof(int));
if(!(*S).base) exit(0);
else
{
(*S).top=(*S).base;
(*S).StackSize=StackInitSize;
return *S ;
}
}
void Push(SqStack *S,int e)
{//将元素e入栈
if((*S).top-(*S).base>=(*S).StackSize)
{//栈满,追加存储空间
(*S).base=(int *)realloc((*S).base,((*S).StackSize+Increment)*sizeof(int));
if(!(*S).base) exit(0);
(*S).top=(*S).base+(*S).StackSize;
(*S).StackSize +=Increment;
}
*S->top++=e;
}
int Pop(SqStack *S,int e)
{//若栈不空,则用e返回栈顶元素;否则打印错误
if((*S).top==(*S).base) printf("Error\n");
e=*--S->top;
return e;
}
void main()
{//十进制转化成八进制
int a,b,c;
SqStack S;
S=InitStack(&S);
scanf("%d",&a);
while(a!=0)
{
b=a%8;
Push(&S,b);
a=a/8;
}
while(!(S.top==S.base))
{
Pop(&S,c);
printf("%-2d",c);
}
printf("\n");
}
为什么输入100后 运行结果不是1 4 4