二进制搜索树程序说 root 没有命名类型
Binary Search Tree Program says root does not name a type
我正在尝试在我的 C++ 编译器上执行二叉搜索树,但是当我在编译器上输入以下代码时,出现错误消息 9 [Error] 'root' does not name a type and 19 [ Error] expected unqualified-id before '{' token.I 尝试将指针根更改为整数,但它给出了转换错误。
#include<iostream>
using namespace std;
struct bstnode{
int data;
bstnode*left;
bstnode*right;
};
bstnode* root;
root = 0;
bstnode*getnewnode(int data)
{
bstnode* newnode=new bstnode();
newnode->data=data;
newnode->left=newnode->right=NULL;
return newnode;
}
void insert(bstnode*root,int data);
{
{
if(root==NULL)
root=getnewnode(data);
}
else if(data<=root->data)
{
root->left=insert(root->left,data);
}
else
{
root->right=insert(root->right,root);
}
return root;
}
bool search(bstnode*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()
{
bstnode*root=NULL;
root=insert(root,15);
root=insert(root,10);
root=insert(root,12);
int number;
cout<<"enter no";
cin>>no;
}
c 标签被删除,所以这部分现在不相关。
在您的代码中,`bstnode` **不是**一种类型。你需要
- 通过使用 `typedef` 别名(模仿)一个类型
- 使用`struct bstnode`
也就是说,(考虑到 bstnode
是一个有效类型)
bstnode* root;
root = 0;
是错误的,你不能在文件范围内有一个赋值语句,你需要使用一个初始化器,比如
bstnode* root = NULL;
之后,您似乎根本没有使用该全局变量。
在 main()
中,你有一个函数作用域变量 root
,它隐藏了全局变量,你将那个内部作用域变量传递给被调用的函数,所以全局变量没有被使用,或者更确切地说完全需要。摆脱那个。
"top" 文件级别只能包含声明和定义,但您在那里有一个赋值:
bstnode* root;
root = 0;
删除那些行;你没有使用那个变量。
您需要定义 bstnode* root = NULL;
而不是您上面的方式
我正在尝试在我的 C++ 编译器上执行二叉搜索树,但是当我在编译器上输入以下代码时,出现错误消息 9 [Error] 'root' does not name a type and 19 [ Error] expected unqualified-id before '{' token.I 尝试将指针根更改为整数,但它给出了转换错误。
#include<iostream>
using namespace std;
struct bstnode{
int data;
bstnode*left;
bstnode*right;
};
bstnode* root;
root = 0;
bstnode*getnewnode(int data)
{
bstnode* newnode=new bstnode();
newnode->data=data;
newnode->left=newnode->right=NULL;
return newnode;
}
void insert(bstnode*root,int data);
{
{
if(root==NULL)
root=getnewnode(data);
}
else if(data<=root->data)
{
root->left=insert(root->left,data);
}
else
{
root->right=insert(root->right,root);
}
return root;
}
bool search(bstnode*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()
{
bstnode*root=NULL;
root=insert(root,15);
root=insert(root,10);
root=insert(root,12);
int number;
cout<<"enter no";
cin>>no;
}
c 标签被删除,所以这部分现在不相关。
也就是说,(考虑到 bstnode
是一个有效类型)
bstnode* root;
root = 0;
是错误的,你不能在文件范围内有一个赋值语句,你需要使用一个初始化器,比如
bstnode* root = NULL;
之后,您似乎根本没有使用该全局变量。
在 main()
中,你有一个函数作用域变量 root
,它隐藏了全局变量,你将那个内部作用域变量传递给被调用的函数,所以全局变量没有被使用,或者更确切地说完全需要。摆脱那个。
"top" 文件级别只能包含声明和定义,但您在那里有一个赋值:
bstnode* root;
root = 0;
删除那些行;你没有使用那个变量。
您需要定义 bstnode* root = NULL;
而不是您上面的方式