#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int SElemType ;
typedef int status;
typedef struct
{
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+STACKINCREMENT;
}
*s->top++=e;
return OK;
}
status StackPrint(SqStack s)
{
SElemType *p,*q;
p=s.top-1;
q=s.base;
for(;p>=q;p--)
printf("%3d",*p);
printf("\n");
return OK;
}
int menu()
{
int choice,i;
for(i=0;i<20;i++)
putchar(3);
printf("\n");
printf("1: InitStack\n2:Push\n3:StackPrint\n4:Gettop\n5:Pop\n6:Match\n7:exit\n");
for(i=0;i<20;i++)
putchar(3);
printf("\n");
do
{
printf("请选择:\n");
scanf("%d",&choice);
}while(choice<=0);
return choice;
}
void main()
{
SqStack S;
SElemType e;
int key,n,i;
while(1)
{
key=menu();
switch(key)
{
case 1:
InitStack(&S);
break;
case 2:
printf("要输入几个数据?\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("输入数据%d:\n",i);
scanf("%d",&e);
}
Push(&S,e);
break;
case 3: StackPrint(S);
break;
}
}
}
三国纷争
喵喔喔
相关分类