gpt4 book ai didi

谁能找出为什么树没有链接

转载 作者:行者123 更新时间:2023-11-30 20:38:19 27 4
gpt4 key购买 nike

我正在编写代码来创建二叉树,但出了问题,我尝试调试但找不到任何人都可以找到它。

我尝试过的代码如下..

头文件是..

#include< stdio.h>
#include< stdlib.h>

结构是..

struct node {
int data;
struct node *left;
struct node *right;
}

其他声明..

*head,*p=NULL;
int count=0;

create() 函数是..

void create(int m) {
if(count==0)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=m;
p->left=NULL;
p->right=NULL;
head=p;
count++;
}
else {
p=(struct node *)malloc(sizeof(struct node));
p->data=m;
p->left=NULL;
p->right=NULL;
}
}

主要功能是..

int main()
{
int n,i,m;
scanf("%d",&n);

for(i=0;i<n;i++) {
scanf("%d",&m);
if(i==0) {create(m);}

if(i>0) {
while(1) {
if(m < p->data)
p=p->left;
else
p=p->right;

if(p==NULL)
{
create(m);
break;
}
}
}

p=head;
}

printf("%d",p->left->data); //printing the data
return 0;
}

最佳答案

想一想,当 i = 1 时,那么 count 也为 1,

if(m<p->data)
{
p=p->left;
}

p->leftnull时会发生什么?现在 p 是一个空指针,对吗?然后你就这样做了...

if(p==NULL)
{
create(m);
break;
}

让我们看看 create(m) 中发生了什么。现在在 create() 中,其他部分将起作用。

else
{
p=(struct node *)malloc(sizeof(struct node));
p->data=m;
p->left=NULL;
p->right=NULL;
}

也还可以。现在你有一个 child 了。这个 child 的引用资料在p中。正确的?但你犯的错误是,

p=head;

这意味着,你所做的一切都消失了。现在没有头子的引用。 p 保持头部的引用。请注意,无论您在 p 中保留什么,head->lefthead->right 始终为 NULL。因此,您必须创建一个在其中找到 NULL 的节点,而不是在 p 中。它不会给你任何结果。

希望对您有帮助。 :)

关于谁能找出为什么树没有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29432967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com