请大家帮一下,数据结构和C的结合
各位能不能帮我修改一下
做的是一个栈的 插入和删除
#include<string.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int Boolean;
typedef int SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
typedef struct SqStack
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack *S)
{
(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack *S,SElemType e)
{
if((*S).top-(*S).base>=(*S).stacksize)
{
(*S).base=(SElemType*)realloc((*S).base,
((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACINCREMENT;
}
*((*S).top)++=e;
return OK;
}
Status Pop(SqStack *S,SElemType *e)
{
if((*S).top==(*S).base)
return ERROR;
*e=*--(*S).top;
return OK;
}
Status StackTraverse(SqStack S,Status(*visit)(SElemType))
{
while(S.top>S.base)
visit(*S.base++);
printf("\n");
return OK;
}
void print(SElemType c)
{
printf("%s",c);
}
void main()
{
SqStack Sa;
SElemType c;
int m;
str i;
InitStack(&Sa);
printf("Please insert data: ");
scanf("%s",&i);
Push(&Sa,i);
printf("Sa= ");
StackTraverse(Sa,print);
while(1)
{
printf("Please choose now?\n");
printf("1.Insert\n");
printf("2.Delete\n");
printf("3.Exit\n");
printf("Please Input: ");
scanf("%d",&m);
if(m==1)
{
printf("Insert data.\n");
scanf("%s",&i);
Push(&Sa,i);
printf("Sa= ");
StackTraverse(Sa,print);
}
else if(m==2)
{
printf("Delete.\n")
Pop(&Sa,i);
printf("Sa= ");
StackTraverse(Sa,print);
}
if(m==3) break;
}
}