📄 sqstack.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include "../header/SqStack.h"
Status InitStack(SqStack &S)
{
S.base = (SElemType*)malloc(sizeof(SElemType) * STACK_INIT_SIZE);
if(!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
} //InitStack
Status DestroyStack(SqStack &S)
{
if(!S.base) return ERROR;
free(S.base);
S.base = NULL;
free(S.top); //?????
S.top = NULL;
S.stacksize = 0;
}
Status ClearStack(SqStack &S)
{
if(!S.base) return ERROR; //栈不存在,返回
if(S.top == S.base) return ERROR; //栈为空,返回
S.top = S.base;
}
Status IsStackEmpty(SqStack S)
{
if(!S.base) return ERROR; //栈不存在,返回
if(S.top == S.base)
return true;
else
return false;
}//IsStackEmpty
int StackLength(SqStack S)
{
if(!S.base) return ERROR; //栈不存在,返回
return S.top - S.base;
}//StackLength
Status GetTop(SqStack S, SElemType &e)
{
if(!S.base) return ERROR; //栈不存在,返回
if(S.base == S.top)
{
return ERROR;
}
e = *(S.top - 1);
return OK;
} //GetTOp
Status Push(SqStack &S,SElemType e)
{
if(S.top - S.base >= S.stacksize) //栈满,追加存储空间
{
S.base = (SElemType*)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof \
(SElemType));
if(!S.base) exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
} //Push
Status Pop(SqStack &S, SElemType &e)
{
if(S.base == S.top)
{
return ERROR;
}
e = *(--S.top);
return OK;
}
Status StackTraverse(SqStack &s, Status(*visit)())
{
//To be
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -