读书人

c语言排序树的有关问题

发布时间: 2013-12-15 22:17:19 作者: rapoo

c语言排序树的问题
下面的代码调试的时候总是出错,是我的数据结构作业题,几乎没怎么用过c语言,求指导~

#include<stdio.h>
#include<malloc.h>
#define M 50

typedef struct node{
int data;
struct node *lchild, *rchild;
}BTNode, *BTREE;

void insert_bst(BTREE t, int item){//递归构造二叉排序树
if(t==NULL){
t = (BTREE)malloc(sizeof(BTNode));
t->data = item;
t->lchild = NULL;
t->rchild = NULL;
}
else if(item<t->data)
insert_bst(t->lchild, item);
else
insert_bst(t->rchild, item);
}

void in_order(BTREE t){
printf("%d",t->data);
BTREE stack[M], p=t;
int top = -1;
if(t!=NULL)
do{
while(p!=NULL){
stack[++top] = p;
p = p->lchild;
}

p = stack[top--];
printf("%d ",p->data);
p = p->rchild;
}while(!(p==NULL&&top==-1));
}

void main(){
int item;
BTREE t=NULL;//不声明为NULL会随机分配值产生异常
while(1){
scanf("%d", &item);
printf("%d", item);
if(item!=-1)
insert_bst(t, item);
else
break;
}
in_order(t);
}

[解决办法]
void insert_bst(BTREE t, int item){//递归构造二叉排序树
这是传值,不行
C语言传指针:
void insert_bst(BTREE* pt, int item){//递归构造二叉排序树

读书人网 >C语言

热点推荐