stack.h
来自「数据结构课程设计,实现一个停车场管理模拟的小程序,主要是对栈和队列的经典操作」· C头文件 代码 · 共 88 行
H
88 行
/**************************************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 + =
减小字号Ctrl + -
显示快捷键?