1、顺序栈的实现
#include <stdio.h>
#include <malloc.h>
typedef int Status;
typedef char SElemType;
#define stack_INIT_SIZE 100 //定义栈空间大小
#define stackINCREMENT 10
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef struct {
SElemType *base; //栈底指针
SElemType *top; //栈顶指针
int stacksize; //栈空间
}Sqstack;Status iniStack(Sqstack &S) //初始化栈
{//构造一个空栈S
S.base=(SElemType*)malloc(stack_INIT_SIZE * sizeof(SElemType));
if(!S.base)return(ERROR);
S.top=S.base; //栈顶指针指向栈底指针表示栈为空
S.stacksize=stack_INIT_SIZE;
return OK;
}//InitStackStatus push(Sqstack &S,SElemType x) //入栈
{
//栈不满的情况下进行入栈操作
if(S.top-S.base>=S.stacksize){
S.base=(SElemType * )realloc(S.base,
(S.stacksize+stackINCREMENT)*sizeof(SElemType));
if(!S.base)return(ERROR);
S.top=S.base+S.stacksize; //设置栈顶指针位置
S.stacksize+=stackINCREMENT; //累积入栈元素空间
}
*S.top++=x; //先入栈,指针再加1
return OK;
}