#include <stdio.h>
#include <stdlib.h>
#define stackinitsize 100
#define stackcreat 10
#define ok 1
#define overflow -1
#define error -1
typedef int elemtype;
typedef struct
{
elemtype *base;
elemtype *top;
int stacksize;
} sqstack;
int initstack(sqstack *s)
{
s->base=(elemtype*)malloc(stackinitsize*sizeof(elemtype));
if(!s->base)exit(overflow);
s->top=s->base;
s->stacksize=stackinitsize;
return ok;
}//构造一个空栈 S
int push(sqstack *s,elemtype e)
{
if(s->top-s->base>=s->stacksize)
{
s->top=(elemtype*)realloc(s->base,(s->stacksize+stackcreat)*sizeof(elemtype));
if(!s->base)exit(overflow);
s->top=s->base+s->stacksize;
}
*s->top++=e;
return ok;
}//若栈不空,则用 e 返回 S 的栈顶元素,并返回 OK
int pop(sqstack *s)
{
if(s->top==s->base)return error;
s->top--;
return ok;
}//若栈不空 ,则删除 S 的栈顶元素,用 e 返回其值;
int stackempty(sqstack *s)
{
if(s->top==s->base)return 1;
else return 0;
评论0
最新资源