⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test2.cpp

📁 二叉树的实现代码 前序遍历 中序遍历 后序遍历
💻 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 + -