#include"pStack.h"
#include<iostream>
using namespace std;
Status CStack::InitStack(SqStack &S) //构造一个空栈
{
S.base=(BiTree *)malloc(STACK_INIT_SIZE * sizeof(BiTNode));
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status CStack::DestroyStack(SqStack &S) //销毁栈S
{
S.top=S.base=NULL;
return OK;
}
Status CStack::ClearStack(SqStack &S) //清空栈S
{
S.top=S.base;
return OK;
}
Status CStack::StackEmpty(SqStack S) //若S为空栈,则返回true,否则返回false
{
if(S.top==S.base) return true;
else
return false;
}
int CStack::StackLength(SqStack &S) //返回S的元素个数,即栈的长度
{
return (S.top-S.base);
}
Status CStack::GetTop(SqStack S,BiTree &e) //若栈不空,用e返回栈顶元素,并返回OK
{
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}
Status CStack::Push(SqStack &S,BiTree e) //入栈
{
if(S.top-S.base>=S.stacksize){//栈满.增加分配
S.base=(BiTree *)realloc(S.base,(S.stacksize+STACKINCREMENT) * sizeof(BiTNode));
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status CStack::Pop(SqStack &S,BiTree &e) //出栈
{
if(S.top==S.base) return ERROR;
e= *(--S.top);
return OK;
}
/*Status CStack::StatusTraverse(SqStack S,Status(*equal)(BiTree,BiTree),BiTree e)
{
int e1;
int n=StackLength(S);
for(int i=0;i<n;i++)
{
Pop(S,e1);
if(equal(e,e1))
{
cout<<e;
return 1;
}
}
return -1;
}
*/
没有合适的资源?快使用搜索试试~ 我知道了~
二叉树的非递归实现算法源代码
共57个文件
cpp:14个
obj:13个
sbr:12个
3星 · 超过75%的资源 需积分: 9 9 下载量 182 浏览量
2011-05-31
22:24:38
上传
评论
收藏 1.52MB ZIP 举报
温馨提示
二叉树的非递归实现算法,内涵源代码,主要实现对二叉树的非递归遍历操作以及其他的一些相关操作。。。
资源推荐
资源详情
资源评论
收起资源包目录
二叉树的非递归实现.zip (57个子文件)
二叉树的非递归实现
二叉树的非递归实现.opt 52KB
IsBiTree.cpp 476B
test.cpp 476B
SCirQueue.h 224B
TreeLength.cpp 614B
CBiTree.h 767B
二叉树的非递归实现.ncb 97KB
pStackImple.cpp 2KB
QueueImple.cpp 1KB
PrintElem.cpp 142B
BiTNode.h 285B
CCirQueue.cpp 0B
PostOrderTraverse.cpp 620B
二叉树的非递归实现.dsp 5KB
LevelOrderTraverse.cpp 485B
二叉树的非递归实现.plg 270B
SQueue.h 520B
二叉树的非递归实现.dsw 544B
LeafNum.cpp 514B
Debug
二叉树的非递归实现.bsc 481KB
vc60.pdb 116KB
PostOrderTraverse.obj 38KB
test.sbr 0B
LevelOrderTraverse.obj 38KB
InOrderTraverse.sbr 0B
LevelOrderTraverse.sbr 0B
vc60.idb 145KB
CreateBiTree.obj 184KB
QueueImple.sbr 0B
CreateBiTree.sbr 0B
PostOrderTraverse.sbr 0B
二叉树的非递归实现.ilk 940KB
PreOrderTraverse.obj 38KB
IsBiTree.obj 11KB
LeafNum.sbr 0B
QueueImple.obj 143KB
二叉树的非递归实现.pch 1.97MB
二叉树的非递归实现.pdb 1.33MB
PreOrderTraverse.sbr 0B
二叉树的非递归实现.exe 592KB
TreeNum.obj 12KB
pStackImple.sbr 0B
IsBiTree.sbr 0B
LeafNum.obj 37KB
TreeLength.obj 12KB
pStackImple.obj 15KB
test.obj 145KB
PrintElem.sbr 0B
TreeLength.sbr 0B
PrintElem.obj 11KB
InOrderTraverse.obj 38KB
InOrderTraverse.cpp 663B
CreateBiTree.cpp 396B
implement.cpp 954B
pStack.h 889B
CCirQueue.h 375B
PreOrderTraverse.cpp 517B
共 57 条
- 1
资源评论
- _wangv_2012-12-04是c++的,内容有点复杂,文件太多了。。乱。。
zjuzly
- 粉丝: 20
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功