gpt4 book ai didi

c - 我对代码块相当陌生。我在这个错误上花了太多时间。有人能指出我在这段代码中的错误吗

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

我是代码块新手。我试图找到 BST 的高度并使用 max() 函数。但是在编译 CodeBlock 时会抛出错误。我使用的是 Windows 机器。我知道手动链接 maths.h 可以解决问题。我知道如何使用 gcc 手动链接 math.h,但我不知道 Windows 的 gcc 等效项。基本上我想知道除了链接之外还有其他解决方案吗?如果手动链接是唯一的选择,那么如何在 Windows 上的 CodeBlocks 上进行链接。谢谢!!

undefined reference to max

我很确定逻辑上没有错误,所有导入语句也都是正确的。但还是没有输出!!这是代码:

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

//Definition of Node for Binary search tree
struct BstNode {
int data;
struct BstNode* left;
struct BstNode* right;
};
struct BstNode* GetNewNode(int);
struct BstNode* Insert(struct BstNode*,int );
int findHeight(struct BstNode *);
//struct BstNode* findMin(struct BstNode* root)
// Function to create a new Node in heap
struct BstNode* GetNewNode(int data) {
struct BstNode* newNode = (struct BstNode*)malloc(sizeof(struct BstNode));
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}

// To insert data in BST, returns address of root node
struct BstNode* Insert(struct BstNode* root,int data) {//pass by value therefore * used and reurn stmt.otherwise pbarg ** no return
if(root == NULL) { // empty tree
root = GetNewNode(data);
}
// if data to be inserted is lesser, insert in left subtree.
else if(data <= root->data) {
root->left = Insert(root->left,data);
}
// else, insert in right subtree.
else {
root->right = Insert(root->right,data);
}
return root;
}
int findHeight(struct BstNode * root){
if(root=NULL){
return -1;
}
else{
return max(findHeight(root->left),findHeight(root->right))+1;
}

};
//BstNode* findMin(BstNode* root)
int main() {
int a,b;
struct BstNode* root = NULL; // Creating an empty tree
/*Code to test the logic*/
root = Insert(root,15);
root = Insert(root,10);
root = Insert(root,20);
root = Insert(root,25);
root = Insert(root,8);
root = Insert(root,12);
findHeight(root);
}

最佳答案

  1. 您没有声明 max 函数。
  2. findHeight函数中,您执行了if(root=NULL),它应该是if(root==NULL)。这样做:

    int findHeight(struct BstNode * root){
    if(root==NULL){
    return -1;
    } else {
    return max(findHeight(root->left),findHeight(root->right))+1;
    }
    }
  3. 不要忘记打印 findHeight 的值。

关于c - 我对代码块相当陌生。我在这个错误上花了太多时间。有人能指出我在这段代码中的错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32423568/

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