好文档 - 专业文书写作范文服务资料分享网站

数据结构-二叉树的遍历(北华大学吕磊) 

天下 分享 时间: 加入收藏 我要投稿 点赞

数据结构-二叉树的遍历(北华大学吕磊)

#include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define MAXQSIZE 10

typedef struct BiTNode {

char data;

struct BiTNode *lChild,*rChild; }BiTNode,*BiTree;

typedef struct SqStack {

BiTNode *base; BiTNode *top; int stacksize; } SqStack;//栈类型

void InitStack(SqStack *S)//创建栈 {

S->base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode)); S->top=S->base;

S->stacksize=STACK_INIT_SIZE; }

int StackEmpty(SqStack *S)//判断栈是否非空 {

if(S->top == S->base ) return OK; else return ERROR; }

void Push(SqStack *S,BiTNode e)//进栈 {

if(S->top-S->base>=S->stacksize) {

S->base=(BiTNode*)realloc(S->base,

(S->stacksize+STACKINCREMENT)*sizeof(BiTNode));

S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT; }

*(S->top)=e; S->top++; }

BiTNode Pop(SqStack *S)//出栈 {

S->top --; return *S->top; }

typedef BiTree QElemType; //设栈元素为二叉树的指针类 型

typedef struct {

QElemType *base;

int front; //头指针,若队列不空,指向队列头元

int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue;

int InitQueue(SqQueue *Q)//创建队列 {

(*Q).base=(QElemType

*)malloc(MAXQSIZE*sizeof(QElemType)); if(!(*Q).base) exit(OVERFLOW); (*Q).front=(*Q).rear=0; return OK; }

int QueueEmpty(SqQueue Q)//判断队列是否为空 {

if(Q.front==Q.rear) return OK; else return ERROR; }

int EnQueue(SqQueue *Q,QElemType e) //插入

数据结构-二叉树的遍历(北华大学吕磊) 

数据结构-二叉树的遍历(北华大学吕磊)#include#include#include#defineOK1#defineERROR0#defineOVERFLOW-1#defineSTACK_INIT_SIZE100#defineSTACKINCRE
推荐度:
点击下载文档文档为doc格式
5xlun6p7gt2wkqq4mj6h371qz5d0jm00kjv
领取福利

微信扫码领取福利

微信扫码分享