[问题] 二元搜索树观念问题

楼主: kdok123 (小天)   2014-09-05 20:23:01
struct node{
int data;
node* lchild,*rchild;
};
void createBST()
{
int item;
node *head=NULL, *T=NULL;
while(1){//问题一:这边怎么设置让while跳出比较好?
//我是希望使用者输入完一串数字后跳出ex:2 1 3 8 5
//用这些数字创建完一棵树后跳出
T = head;//问题二:为了纪录头结点
scanf_s("%d",&item);
while(1){
if(!T){
T = (node*)malloc(sizeof(node));
T->data = item;
T->lchild = NULL;
T->rchild = NULL;
break;
}
if(item<T->data)
T = T->lchild;
else if(item>T->data)
T = T->rchild;
}
}
}
//////////////以下为问题///////////////
以上为自己写的二元查找树,希望使用者输入一串数据后排列出来
问题一:请问要怎么让scanf把东西读完后让while测到呢?
我查到的都是EOF,但不能用在这
问题二:我做了一个头结点想要纪录T的初始位置,可是位址的变化跟我想的不一样
请问该怎么写才能达到我的要求呢? 还有为什么我这样写纪录不起来...
作者: future314 (未来π)   2014-09-06 01:12:00
你可以试试字串处理 以空白键为分隔再用atoi如果要设头点应该写成T=head=(node*)malloc(......一点浅见
楼主: kdok123 (小天)   2014-09-06 11:42:00
谢谢! 不过前面宣告malloc就没有办法进入!T的判别式了且这样也还是没有记录到头点><
作者: masan22305 (海豹)   2014-09-10 15:51:00
一开始T=head, 后续你也对T做malloc的动作, 那head呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com