#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配增量
struct zhan//定义一个栈的结构体
{
int *base;//在栈构造之前和销毁之后,base的值为NULL
int *top;//栈顶指针
int stacksize;//当前已分配的存储空间,以元素为单位
};
struct zhan S;
/************************ 构造空栈 ************************/
int InitStack()
{
S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!S.base)
exit (OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
printf("构造空栈成功!!!\n");
return OK;
}
/************************ 销毁栈 ************************/
int DestroyStack()
{
if(!S.stacksize)
printf("栈不存在!!!\n");
else
{
free(S.base);//释放栈底指针
printf("销毁栈成功!!!\n");
}
return OK;
}
/************************ 初始化栈 ************************/
int ClearStack()
{
if(!S.stacksize)
printf("栈不存在!!!\n");
else
{
S.top=S.base;
printf("栈初始化成功!!!\n");
}
return OK;
}
/************************检测是否空栈************************/
int StackEmpty()
{
if(!S.stacksize)
printf("栈不存在!!!\n");
else
if(S.top==S.base)
printf("栈为空!!!\n");
else
printf("栈不为空!!!\n");
return OK;