#2
azzbcc2016-12-22 09:54
|
程序代码:
#include<stdio.h>
#include<malloc.h>
#define MAX 20
typedef struct BTNode
{
char data;
struct BTNode*lchild; //定义左子树
struct BTNode*rchild; //定义右子树
} *BiTree;
typedef struct
{
BiTree data[MAX];
int front,rear;
}SqQueue;
void createBiTree(BiTree *t)
{
char s;
BiTree q;
printf("\nplease input data:");
s=getchar();
getchar();
if(s=='#')
{
*t=NULL;
return;
}
q=(BiTree)malloc(sizeof(struct BTNode));
if(q=NULL)
{
printf("Memory alloc failure!");
exit(0);
}
q->data=s;
*t=q;
createBiTree(&q->lchild);
createBiTree(&q->rchild);
}
void RPreorder(BiTree p)
{
BiTree stack[MAX],q;
int top=0,i;
for(i=0;i<MAX;i++) stack[i]=NULL;
q=p;
while(q!=NULL)
{
printf("%c",q->data);
if(q->rchild!=NULL) (p->rchild);
if(q->lchild!=NULL);
else if(top>0) q=stack[--top];
else q=NULL;
}
}
int main()
{
BiTree t=NULL,copyt=NULL;
int select;
do
{
printf("请依次输入结点序列:\n");
createBiTree(&t);
if(t!=NULL)
printf("二叉树创建成功!\n");
else
printf("二叉树未创建成功!\n");
break;
printf("\n先序遍历的非递归:");
RPreorder(t);
}
while(select);
return 0;
}
#include<malloc.h>
#define MAX 20
typedef struct BTNode
{
char data;
struct BTNode*lchild; //定义左子树
struct BTNode*rchild; //定义右子树
} *BiTree;
typedef struct
{
BiTree data[MAX];
int front,rear;
}SqQueue;
void createBiTree(BiTree *t)
{
char s;
BiTree q;
printf("\nplease input data:");
s=getchar();
getchar();
if(s=='#')
{
*t=NULL;
return;
}
q=(BiTree)malloc(sizeof(struct BTNode));
if(q=NULL)
{
printf("Memory alloc failure!");
exit(0);
}
q->data=s;
*t=q;
createBiTree(&q->lchild);
createBiTree(&q->rchild);
}
void RPreorder(BiTree p)
{
BiTree stack[MAX],q;
int top=0,i;
for(i=0;i<MAX;i++) stack[i]=NULL;
q=p;
while(q!=NULL)
{
printf("%c",q->data);
if(q->rchild!=NULL) (p->rchild);
if(q->lchild!=NULL);
else if(top>0) q=stack[--top];
else q=NULL;
}
}
int main()
{
BiTree t=NULL,copyt=NULL;
int select;
do
{
printf("请依次输入结点序列:\n");
createBiTree(&t);
if(t!=NULL)
printf("二叉树创建成功!\n");
else
printf("二叉树未创建成功!\n");
break;
printf("\n先序遍历的非递归:");
RPreorder(t);
}
while(select);
return 0;
}
编译没错,但输入数据点击运行后就崩溃,不知该怎么办,谢谢各位了!