如何在BST C ++中添加字符类型
how to add char type in bst c++?
我知道如何添加整数,只是无法为 char[] 类型做,请帮忙.下面的代码适用于整数,它确实有效,但是如何在字符的情况下进行比较?
void insert (int a)
{
node *newnode= new node;
newnode->data= a;
if ( isempty() )
{
root= newnode;
}
else
{
node *temp=root;
while(temp!=NULL)
{
if(temp->data > a)
{
if(temp->left==NULL)
temp->left=newnode;
temp=temp->left;
}
else if(temp->data < a)
{
if(temp->right==NULL)
temp->right=newnode;
temp=temp->right;
}
else if(temp->data==a)
temp=NULL;
}
}
}
您只需
更改节点中data
字段的类型:
char data;
如果要具有多个字符的数据字段,则应使用std::string
:
std::string data;
若要使 BST 更通用,请考虑使用模板来定义该数据类型。
template <class DataType>
struct Node
{
Node<DataType> * left;
Node<DataType> * right;
DataType data;
};
编辑 1:
如果您坚持在节点中使用char *
作为字符串类型,则必须将 BST 中的每个比较更改为使用 strcmp
。 std::string
数据类型已定义operator==
和operator<
,因此使用 std::string
作为数据类型应该只需要更改节点以及指定data
类型的位置。
这不是答案,但你有内存泄漏。当在树中已经有那个int时,你不会删除"newnode"
您拥有的位置
else
if(temp->data==a)
temp=NULL;
应该有
else
if(temp->data==a)
{
temp=NULL;
delete newnode;
}
或者您应该使用以下之一
std::shared_ptr 或 std::unique_ptr(我认为是共享的)
相关文章:
- 只能向C++添加一定数量的字符
- 如何在C++中为字符串添加字符?
- 如何将字符添加到已经大小的数组中?
- 向字符串添加字符
- 如何编写模板函数来添加整数但连接字符串和字符类型?
- 在字符串中的字符前添加空格C++插入函数
- QT - C++ 向 QString 添加字符' " '
- 添加字符时,编译器会停止优化未使用的字符串
- 如何在预定义字符串中添加字符
- 如何在C++中获取子字符串并在字符串之间添加字符
- 宏在字符串末尾添加字符而不传递源字符串
- 如何在BST C ++中添加字符类型
- 向字符数组 c++ 添加字符
- 向char*[]添加字符时出现问题
- fstream正在为我的文件的每一行添加字符
- 在C++中向字符串添加字符
- 在C++中的其他字符之间添加字符
- 读取文本文件,然后添加字符到列表
- 向QString中的每行添加字符
- 如何添加字符缓冲区的STD字符串放置在结构体