gpt4 book ai didi

c - 二叉树,我哪里错了?

转载 作者:行者123 更新时间:2023-11-30 20:51:08 24 4
gpt4 key购买 nike

嗯,这似乎在某个地方是错误的,也许是内存分配或指针(最有可能),我做错了什么?

当我创建除第一个节点之外的新节点时,出现错误。错误不清楚。

谢谢

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

struct binary_tree{
int data;
struct binary_tree *leftnode;
struct binary_tree *rightnode;
};

void create_node(struct binary_tree *node , int input)
{
struct binary_tree *new_node;

new_node = (struct binary_tree *)malloc(sizeof(struct binary_tree));

new_node->data = input;
new_node->leftnode = NULL;
new_node->rightnode = NULL;

node = new_node;
}

void LNR_traversal(struct binary_tree *node)
{
while(!(node->leftnode== NULL && node ->rightnode==NULL))
{
if(node->leftnode!=NULL)
LNR_traversal(node->leftnode);
printf("%d",node->data);
if(node->rightnode!=NULL)
LNR_traversal(node->rightnode);
}

}

int main()
{
int i;
int input;

struct binary_tree *start;
struct binary_tree *node;

printf("Data:");
scanf("%d",&input);
create_node(start,input);

//node = start;

printf("\nDATA:");
scanf("%d",&input);

while(input!=-1)
{
node = start;

if(node->leftnode == NULL){
create_node(node->leftnode,input);
printf("1");
}
else if(node->rightnode == NULL)
create_node(node->rightnode,input);
else if(node->leftnode != NULL && node->rightnode!=NULL){
node = node->leftnode;
node = node->rightnode;
}
printf("\nDATA:");
scanf("%d",&input);
}
node=start;

LNR_traversal(start);
return 0;
}

最佳答案

在 C 中的函数调用中,参数按值传递。这意味着参数被复制为参数,因此修改被调用者中的参数不会影响调用者中的变量。

使用指针修改被调用者中调用者的局部变量。

在这种情况下,我认为从 create_node() 返回分配的节点并让调用者分配返回值比使用指针修改变量更好。

关于c - 二叉树,我哪里错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34810099/

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