c++ - 在 C++ 中为树创建新结构

标签 c++

<分区>

我会保持简短。当我运行代码时,我输入第一个字符(例如:“k”),一切正常。第二次我输入一个字符(例如:'j')时出现错误,编译器说它在线(有注释)。请帮忙。谢谢。

代码:

struct nodeType{
    char letter;
    nodeType*leftNode;
    nodeType*rightNode;

};
void putInNode(nodeType*n,char c){
    if ((char)(n->letter) >='a' && (char)(n->letter) <='z')/* ERROR IS HERE*/
    {
        if(n->letter < c)
            putInNode(n->leftNode, c);
        else
            putInNode(n->rightNode, c);
    }
    n->letter=c;
}
int main(){
    nodeType*a=new nodeType();
    char c;
    do {
        cin >> c;
        if(c=='.')
            break;
        putInNode(a,c);
    } while (true);
    cout << a->letter << endl;

}

最佳答案

如果这样做的目的是构建一棵仅包含来自输​​入流的字母的树,当您到达一个句点时停止,并跳过任何不在 {'a'...'z'} 中的内容,我想这就是你想要的:

#include <iostream>

struct nodeType
{
    nodeType(char ch = 0)
       : letter(ch), leftNode(), rightNode()
    {}

    char letter;
    nodeType* leftNode;
    nodeType* rightNode;
};

void putInNode(nodeType*& n,char c)
{
    if (!n)
    {
        n = new nodeType(c);
    }
    else if (n->letter >='a' && n->letter <='z')
    {
        if(c < n->letter)
            putInNode(n->leftNode, c);
        else
            putInNode(n->rightNode, c);
    }
}

int main()
{
    nodeType* a = NULL;
    char c;
    while ((std::cin >> c) && c != '.')
        putInNode(a,c);

    if (a)
        std::cout << a->letter << '\n';
}

注意:这会将重复项推到右侧 子行。如果这不是本意,请更改以下内容:

        if(c < n->letter))
            putInNode(n->leftNode, c);

改为:

        if(c <= n->letter)) // <== note less-or-equal
            putInNode(n->leftNode, c);

我将清理生成的动态树留给您。并且应该注意的是,正如所写的那样(之前和现在),第一个节点将始终是你树的根(我假设有一天你计划通过轮类来平衡,比如你在这条路上走得更远)。

关于c++ - 在 C++ 中为树创建新结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120001/

相关文章:

c++ - mkChar 不转义百分号

c++ - 在 C/C++ 中导出 .sqlite 文件(在 Windows 上)

c++ - 如何声明将使用 map.size() 计算的 int 类型

c++ - 我的 GUI 表单后面有烦人的空白控制台

c++ - 父级上 protected 构造函数和继承的默认构造函数不 protected

c++ - 嵌套类中的可变参数模板

c++ - 静态库中的内联函数被用户项目中的同名函数替换

c++ - 为什么我的glDrawArrays没有绘制存储的点?

c++ - 安全派生指针的整数表示

c++ - 实现一个接收和处理客户端请求的服务器(cassandra 作为后端),Python 还是 C++?