📄 stack.h
字号:
/**************************************stack.h***********************************************/
/*
定义常用栈操作函数
*/
//#define STACK_INIT_SIZE 10//存储空间初始分配量
//#define STACKINCERMENT 1//存储空间分配增量
typedef struct
{
CarInfo* base; //在栈构造之前和销毁之后,base的值为NULL
CarInfo* top; //栈顶指针
float stacksize; //当前已分配的存储空间,以元素为单位
}SqStack;
//构造一个空栈
Status InitStack(SqStack* S);
//销毁栈S,S不再存在
Status DestroyStack(SqStack* S);
//返回S的元素个数,即栈的长度
int StackLength(SqStack* S);
//若S为空栈,则返回TRUE,否则返回FALSE
Status StackEmpty(SqStack* S);
//若栈不空,则删除S的栈顶元素,并用e返回其值,并返回TRUE,否则返回FALSE
Status Pop(SqStack* S,CarInfo *e);
//插入元素e为新的栈顶元素
Status Push(SqStack* S,CarInfo *e);
Status InitStack(SqStack* S)
{ //构造一个空栈
S->base=(CarInfo*)malloc(STACK_INIT_SIZE*sizeof(CarInfo));
if(!S->base)
return FALSE; //申请存储空间失败
S->top=S->base;
S->stacksize=0;
return TRUE;
}//_InitStack
Status DestroyStack(SqStack* S)
{ //销毁栈S,S不再存在
free(S->base);
S->base=NULL;
return TRUE;
}//_DestroyStack
Status StackEmpty(SqStack* S)
{ //若S为空栈,则返回TRUE,否则返回FALSE
if(S->base==S->top)
return TRUE;
else
return FALSE;
}//_StackEmpty
int StackLength(SqStack* S)
{ //返回S的元素个数,即栈的长度
int StackLength=0;
if(S->top==S->base)
return FALSE; //若S为空栈,则返回FALSE
StackLength=S->top-S->base;
return(StackLength);
}//_StackLength
Status Pop(SqStack* S,CarInfo *e)
{ //若栈不空,则删除S的栈顶元素,并用e返回其值,并返回TRUE,否则返回FALSE
if(S->top==S->base)
return FALSE; //若S为空栈,返回FALSE
*e=*(--S->top);
S->top->CarNum=0; //将车号清零,防止出错
return TRUE;
}//_Pop
Status Push(SqStack* S,CarInfo *e)
{ //插入元素e为新的栈顶元素
*S->top++=*e;
return TRUE;
}//_Push
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -