C 有人能找出为什么树没有链接吗
我正在编写一个代码来创建一个二叉树,但出现了一些问题,我试图调试,但找不到任何人可以找到它 我试过的代码如下 头文件是C 有人能找出为什么树没有链接吗,c,C,我正在编写一个代码来创建一个二叉树,但出现了一些问题,我试图调试,但找不到任何人可以找到它 我试过的代码如下 头文件是 #include< stdio.h> #include< stdlib.h> 其他声明 *head,*p=NULL; int count=0; create()函数为 void create(int m) { if(count==0) { p=(struct node *)malloc(sizeof(struct no
#include< stdio.h>
#include< stdlib.h>
其他声明
*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;
}
主要功能是
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;
}
intmain()
{
int n,i,m;
scanf(“%d”和“&n”);
对于(i=0;i0){
而(1){
如果(m数据)
p=p->左;
其他的
p=p->右;
if(p==NULL)
{
创建(m);
打破
}
}
}
p=水头;
}
printf(“%d”,p->left->data)//打印数据
返回0;
}
想想,当i=1时,计数也是1
if(m<p->data)
{
p=p->left;
}
让我们看看create(m)中发生了什么。现在在create()中,其他部分将起作用
else
{
p=(struct node *)malloc(sizeof(struct node));
p->data=m;
p->left=NULL;
p->right=NULL;
}
也可以。现在你有一个孩子的头。该子项的引用位于p中。对吗?但你犯的错误是
p=head;
也就是说,你所做的一切都消失了。现在还没有提到头上的孩子。p是保持头部的参考。请参见,head->left或head->right始终为NULL您在p中保留的内容。因此,您必须创建一个节点,在该节点中找到一个NULL,而不是p。它不会给你任何结果
希望它能帮助你。:)