求助:顺序栈的建立和插入元素出现问题
这是basic.h文件#include"stdio.h"
#define StackSize 100
typedef int ElemType;
typedef struct
{
ElemType *top;
ElemType *base;
int stacksize;
}SeqStack;
void InitStack(SeqStack *S)
{
S->base=(ElemType *)malloc(sizeof(ElemType)*StackSize);
if(S->base==NULL)
exit(1);
S->top=S->base;
S->stacksize=StackSize;
}
int EmptyStack(SeqStack S)
{
if(S.top==S.base)
return 1;
else
return -1;
}
int FullStack(SeqStack S)
{
if(S.top-S.base==StackSize)
return 1;
return -1;
}
int InsertElem(SeqStack *S,ElemType x)
{
if(FullStack(*S)==1)
return -1;
*(S->top++)=x;
return 1;
}
int GetTop(SeqStack S,ElemType *x)
{
if(EmptyStack(S)==1)
return -1;
x=S.top-1;
return 1;
}
int DeleteTop(SeqStack *S,ElemType *x)
{
if(EmptyStack(*S)==1)
return -1;
x=--S->top;
return 1;
}
void PrintStack(SeqStack S)
{
int i;
ElemType *p;
if(EmptyStack(S)==1)
printf("The Stack is Empty!\n");
else
{
printf("The Stack is:");
for(p=S.base,i=0;i<S.top-S.base;i++,p++)
printf("%d,",*p);
}
下面是insert.c文件
#include"stdio.h"
#include"basic.h"
main()
{
int i=1;
ElemType x;
SeqStack *S;
InitStack(S);
printf("Input elem%d:",i++);
scanf("%d",&x);
while(x!=0)
{
InsertElem(S,x);
printf("Input elem%d:",i++);
scanf("%d",&x);
}
PrintStack(*S);
printf("Input what to insert:");
scanf("%d",&x);
if(x!=0)
InsertElem(S,x);
PrintStack(*S);
getch();
}
为什么编译的时候没有反应,原先是可以的,后来加了这一段就不行了
printf("Input what to insert:");
scanf("%d",&x);
if(x!=0)
InsertElem(S,x);
PrintStack(*S);