个人觉得算法没有问题但是一直提示指针为空,应该是创建的时候出了问题,但是我看不出来..希望能帮忙指正
下附代码:
(由于一直提示正文错误,故放在回复区)
个人觉得算法没有问题但是一直提示指针为空,应该是创建的时候出了问题,但是我看不出来..希望能帮忙指正
下附代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node* lchild, rchild;
}tree;
void create_tree(tree t)
{
tree* s[100];
tree* q;
int i, j;
char x;
printf("请分别输入序号i和数据内容x:");
scanf("%d,%c",&i,&x);
while (i)
{
q = (tree*)malloc(sizeof(tree));
q->data = x; q->lchild = NULL; q->rchild = NULL;
s[i] = q;
if (i == 1)t = q;
else
{
j = i / 2;
if (i % 2 == 0)
{
s[j]->lchild = q;
}
else
{
s[j]->rchild = q;
}
}
printf("请分别输入序号i和数据内容x:");
scanf("%d,%c", &i,&x);
}
}
void inorder(tree* t)
{
tree* s[100];
int top = 0;
tree* p = t;
while (p != NULL || top != 0)
{
while(t)
{
s[++top] = p; p = p->lchild;
}
if(top)
{
p = s[top--];
if(p->data!=' ')
printf("%c ", p->data);
p = p->rchild;
}
}
}
void main()
{
tree* t;
t = (tree*)malloc(sizeof(tree));
printf("请创建二叉树:\n");
create_tree(t);
printf("%c ", t->data);
printf("\n二叉树的中序遍历输出为:");
inorder(t);
}