gpt4 book ai didi

c++ - 二叉树不会编译: Error 'WinMain@16'

转载 作者:行者123 更新时间:2023-12-02 11:04:25 25 4
gpt4 key购买 nike

我正在使用链接列表创建二叉树的过程,下面有我的类Funtree:

template <typename T>
class funtree
{
private:
struct Node
{
T data;
Node *left;
Node *right;
};
Node* GetNewNode(T data)
{
Node* newNode = new Node();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;

}
Node* Insert(Node* root, T data)
{
if(root == NULL) //empty tree
{
root = GetNewNode(data);
return root;
}
else if(data <= root->data)
{
root->left = Insert(root->left, data);
}
else
{
root->right = Insert(root->left, data);
}
return root;
}
bool Search(Node* root, int data)
{
if(root == NULL)
return false;
else if (root->data == data)
return true;
else if (data <= root->data)
return Search(root->left, data);
else
return Search(root->right, data);

和我的主要方法:
 T main()
{
Node* root; // pointer to root node
root = NULL; // setting tree as empty
Insert(root,15);
Insert(root,10);
Insert(root,20);
T num;
cout<<"Enter number to be searched\n";
cin>>num;
if(Search(root, num) == true)
cout<<"Found\n";
else
cout<<"Not Found\n";
}

我正在尝试测试我的搜索方法,以查看它是否有效,并且当我尝试编译时,只会出现错误:
main.c||undefined reference to `WinMain@16'|

该程序也是一个控制台应用程序,它们都在同一个类中,我不认为这些是问题,只是以防万一需要知道它。

编辑:

我已经更改了代码的某些部分,但会像在编译器中一样粘贴它,而不是将主函数和类分开:
#include <iostream>

using namespace std;

template <typename T>
class funtree
{
private:
struct Node
{
T data;
Node *left;
Node *right;
};
Node* GetNewNode(T data)
{
Node* newNode = new Node();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;

}
Node* Insert(Node* root, T data)
{
if(root == NULL) //empty tree
{
root = GetNewNode(data);
return root;
}
else if(data <= root->data)
{
root->left = Insert(root->left, data);
}
else
{
root->right = Insert(root->left, data);
}
return root;
}
bool Search(Node* root, int data)
{
if(root == NULL)
return false;
else if (root->data == data)
return true;
else if (data <= root->data)
return Search(root->left, data);
else
return Search(root->right, data);

}

int main()
{
Node* root; // pointer to root node
root = NULL; // setting tree as empty
Insert(root,15);
Insert(root,10);
Insert(root,20);
T number;
cout<<"Enter number to be searched\n";
cin>>number;
if(Search(root, number) == true)
cout<<"Found\n";
else
cout<<"Not Found\n";
}

最佳答案

您的代码中有很多问题,希望这段代码对您有所帮助

prob1:将struct Node清除为private,但尝试在main中访问它

prob2:root *作为参数在您新建节点时已更改,但没有返回新的root。将Insert定义为Node* Insert(Node*& root, T data)或将函数的返回值分配给root都可以。

prob3:main应该总是返回int

#include <iostream>
using namespace std;
template <typename T>
class funtree
{
public:
struct Node
{
T data;
Node *left;
Node *right;
};
Node* GetNewNode(T data)
{
Node* newNode = new Node();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;

}
Node* Insert(Node* root, T data)
{
if(root == NULL) //empty tree
{
root = GetNewNode(data);
return root;
}
else if(data <= root->data)
{
root->left = Insert(root->left, data);
}
else
{
root->right = Insert(root->left, data);
}
return root;
}
bool Search(Node* root, int data)
{
if(root == NULL)
return false;
else if (root->data == data)
return true;
else if (data <= root->data)
return Search(root->left, data);
else
return Search(root->right, data);
}
};
int main()
{
funtree<int> tree;
funtree<int>::Node* root; // pointer to root node
root = NULL; // setting tree as empty
root = tree.Insert(root,15);
root = tree.Insert(root,10);
root = tree.Insert(root,20);
int num;
cout<<"Enter number to be seared\n";
cin>>num;
cout<<num;
if(tree.Search(root, num) == true)
cout<<"Found\n";
else
cout<<"Not Found\n";
return 0;
}

关于c++ - 二叉树不会编译: Error 'WinMain@16' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22061423/

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