gpt4 book ai didi

创建一个简单的二叉搜索树

转载 作者:行者123 更新时间:2023-11-30 17:26:32 25 4
gpt4 key购买 nike

我一直在尝试创建一个二叉搜索树,根据这些结构中的“公司”名称按字母顺序排序,并使用递归进行排序。通过结构体使指针指向正确位置的运动让我很困惑。

我收到这些错误:

gcc -c 树.c

tree.c:在函数“treeInsert”中:

tree.c:34:11:错误:请求非结构或 union 中的成员“entryPtr”

tree.c:36:55:错误:请求非结构或 union 中的成员“entryPtr”

tree.c:38:12:错误:请求非结构或 union 中的成员“权限”

tree.c:39:35:错误:请求非结构或 union 中的成员“权限”

tree.c:43:12:错误:在非结构或 union 中请求成员“left”

tree.c:44:35:错误:在非结构或 union 中请求成员“left”

tree.c:47:3:警告:从不兼容的指针类型传递“printTree”的参数 1 [默认启用]

在tree.c:19:0包含的文件中:tree.h:36:6:注意:预期为“struct treeNode *”,但参数的类型为“struct treeNode ”make: * [tree.o] 错误 1

以下是结构:

typedef struct companyEntryTag{
char * companyName;
char * companyDescription;
char * website;
char * streetAddr;
char * suiteNumber;
char * city;
char * state;
int zip;
double latitude;
double longitude;
} companyEntry;

typedef struct treeNodeTag{
companyEntry * entryPtr;
struct treeNodeTag * left;
struct treeNodeTag * right;
} treeNode;

typedef struct listNodeTag{
companyEntry * entryPtr;
struct listNodeTag * next;
} listNode;

我尝试了很多不同的解决方案,但这是我当前用来尝试执行此操作的函数,但出现了上述错误:

int treeInsert(listNode * list, treeNode ** rootPtr)
{
if(list == NULL){return -1;}

//Make the root next point to what list is
*rootPtr->entryPtr = list->entryPtr;

if(strcmp(list->next->entryPtr->companyName, rootPtr->entryPtr->companyName)==1)
{
rootPtr->right->entryPtr = list->next;
treeInsert(list->next, rootPtr->right->entryPtr);
}
else
{
rootPtr->left->entryPtr = list->next;
treeInsert(list->next, rootPtr->left->entryPtr);
}

printTree(rootPtr);

return 0;
}

既然我已经尝试了所有这些不同的实现该功能的方法,我不太确定这些错误告诉我什么。我很困惑,希望得到一些帮助!

最佳答案

它应该是(*rootPtr)->entryPtr,而不是*rootPtr->entryPtrrootPtr->entryPtr

由于运算符优先级,*rootPtr->entryPtr 确实是 *(rootPtr->entryPtr)

关于创建一个简单的二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26749263/

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