#include<stdio.h>
#include<malloc.h>
#define stack_init_size 100
#define stackincrement 10
#define overflow 0
#define ok 1
#define error 0
typedef int selemtype; /*定义结构体*/
typedef struct {
selemtype *base;
selemtype *top;
int stacksize;
} sqstack;
int initstack(sqstack &sq) /*初使化堆栈*/
{
sq.base=(selemtype *)malloc(stack_init_size*sizeof(selemtype));
if(!sq.base) return overflow;
sq.top=sq.base;
sq.stacksize=stack_init_size;
return ok;
}
int push(sqstack &sq,selemtype e) /*压栈*/
{
if(sq.top-sq.base>sq.stacksize)
{
sq.base=(selemtype *)realloc(sq.base,(sq.stacksize+stackincrement)*sizeof(selemtype));
sq.top=sq.base+sq.stacksize;
sq.stacksize+=stackincrement;
}
*sq.top++=e;
}
int pop(sqstack &sq,selemtype &e) /*出栈*/
{
if(sq.top==sq.base) return error;
e=*--sq.top;
return ok;
}
int main() /*主程序 压入1到100,然后再弹出*/
{
int e,i;
int a[100];
sqstack sq;
initstack(sq);
for(i=0;i<100;i++)
{
a[i]=i+1;
push(sq,a[i]);
}
for(i=0;i<100;i++)
{
pop(sq,e);
printf("%d",e);
printf("/n");
}
}