数据结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二叉树:

#include

#include

typedef char ElemType;

#define MAXSIZE 100

typedef struct BiTNode

{

char data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

typedef struct {

BiTree *base;

int rear;

int front;

}SeqQueue;

typedef struct {

BiTree data[MAXSIZE];

int top;

}SeqStack,*PSeqStack;

int Init_SeqQueue(SeqQueue *Q)//初始化队列{

(*Q).base=(BiTree *)malloc(MAXSIZE*sizeof(BiTree));

if((*Q).base)

{

(*Q).front=0;

(*Q).rear=0;

}

return 1;

}

int Empty_SeqQueue(SeqQueue Q)//判断队空

{

if(Q.front==Q.rear)

return 1;

else

return 0;

}

int Push_SeqQueue(SeqQueue *Q,BiTree x)//入队

{

if(((*Q).rear+1)%MAXSIZE==(*Q).front)

{

printf("队列满");

return 0;

}

else

{

(*Q).rear=((*Q).rear+1)%MAXSIZE;

(*Q).base[(*Q).rear]=x;

return 1;

}

}

int Pop_SeqQueue(SeqQueue *Q,BiTree *x)//出队{

if(Empty_SeqQueue((*Q)))

{

printf("队空");

return 0;

}

else

{

(*Q).front=((*Q).front+1)%MAXSIZE;

*x=(*Q).base[(*Q).front];

return 1;

}

}

PSeqStack Init_SeqStack()//初始化栈

{

PSeqStack S;

S=(PSeqStack)malloc(sizeof(SeqStack));

if(S)

S->top=-1;

return S;

}

int Empty_SeqStack(PSeqStack S)//判断栈空{

if(S->top==-1)

return 1;

else

return 0;

}

int Push_SeqStack(PSeqStack S,BiTree x)//入栈{

if(S->top==MAXSIZE-1)

return 0;

else

{

S->top++;

S->data[S->top]=x;

return 1;

}

}

int Pop_SeqStack(PSeqStack S,BiTree *x)//出栈

{

//printf("PopAAAAAAAA %d \n",S->top);

if(Empty_SeqStack(S))

return 0;

else

{

//printf("Pop00000 %d \n",S->top);

*x=S->data[S->top];

//printf("Pop00000 %d \n",S->top);

S->top--;

return 1;

}

}

void Destroy_SeqStack(PSeqStack S)//销毁栈

{

if(S)

free(S);

S=NULL;

}

//创建一棵二叉树(通过先序序列创建树)

int count=0;

void CreateBiTree(BiTree *T)

{

char c;

scanf("%c",&c);

if(c=='#')

{

*T=NULL;

}

else

{

*T=(BiTNode *)malloc(sizeof(BiTNode));

(*T)->data=c;

CreateBiTree(&(*T)->lchild);

CreateBiTree(&(*T)->rchild);

}

}

//访问二叉树结点的具体操作

void visit(char c,int level)

{

printf("%c位于第%d层\n",c,level); }

void visit1(char c)

{

printf("%c\t",c);

}

//求二叉树高度

int Height(BiTree T)

{

int h1,h2;

if(T==NULL)

return 0;

else

{

h1=Height(T->lchild);

相关文档
最新文档