📄 test2.cpp
字号:
#include"head.h"
#include<iostream.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
Status InitStack(SqStack &S){
//初始化栈
S.base=(BiTree *)malloc(STACK_INIT_SIZE * sizeof(BiTree));
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;
else
free(S.base);
S.base=NULL;
S.top=NULL;
S.stacksize=0;
return OK;
}//DestroyStack
Status ClearStack(SqStack &S){
//清空栈
if (!S.base)
return ERROR;
S.top=S.base;
return OK;
}//ClearStack
Status StackEmpty(SqStack &S){
//求盏是否为空
if(S.base==S.top) //等栈底和栈顶相等时就是空栈
return TRUE;
else
return ERROR;
}//StackEmpty
int StackLength(SqStack &S){
//求栈长
return S.top-S.base;
}
Status Push(SqStack &S,BiTNode* e){
//压栈
if(S.top-S.base>=S.stacksize){ //栈满,申请新空间
S.base=(BiTree *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(BiTree));
if(!S.base)exit(OVERFLOW); //申请不成功
S.top=S.base+S.stacksize;
}
*S.top++=e;
;//压入值为e的元素
return OK;
}//Push
Status Pop(SqStack &S,BiTNode* &e){
//退栈
if(S.top==S.base) return ERROR; //栈空
e=*--S.top; //用e返回退出的元素
return OK;
}//Pop
Status vist (BiTree* e ){
//历遍方式,这里是输出元素
cout<<(*e)->Data;
return OK;
}//(* vist)
Status StackTraverse(SqStack S,Status (* vist)(BiTree*)){
//历遍函数
while(S.base<S.top){
vist(S.base++); //调用历遍的方式
}
return OK;
}//StackTraverse
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -