数据结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);