c++ - 在 C++ 中创建具有 x 和 y 最小和最大范围的单链表

标签 c++ algorithm data-structures singly-linked-list

我正在尝试使用最小值和最大值创建链表。这可能是一种非常愚蠢的做法,也许我应该使用 vector 来完成我想做的事情。

我很难插入,我不知道为什么这行不通,我上网查了资料,看了看书,但没有任何效果。可能是因为我正在使用智能指针,但我对使用它们还不是 100% 有信心,但这是我的节点:

struct Node
{
    Node(int m = 0, int M = 0, std::shared_ptr<Node> r = nullptr) : min(m), max(M), right(r){}
    std::shared_ptr<Node> right;

    int min;
    int max;
};

我相信这是正确设置的,但这是我的插入函数,我确信这就是问题所在。而且我不确定这是否应该是一个 void 函数,或者它是否应该是一个 std::shared_ptr

std::shared_ptr<Node> Container::insert(std::shared_ptr<Node> list, int min, int max) 
{

    if(!list)
    {
        list = std::make_shared<Node>(min, max);
    }

    list->right = insert(list->right, min, max);
    return list;

}

我有点不知所措,也许我只是对问题的理解不够透彻。基本上,我只想比较最小值和最大值。同样,这可能是我处理问题的一种非常糟糕的方式。

最佳答案

通过添加递归的基本情况来更正代码。

std::shared_ptr<Node> Container::insert(std::shared_ptr<Node>& list, int min, int max) 
{

    if(!list)
    {
        list = std::make_shared<Node>(min, max);
    }else{
        list->right = insert(list->right, min, max);
    }

    return list;

}

希望对您有所帮助。

关于c++ - 在 C++ 中创建具有 x 和 y 最小和最大范围的单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892093/

相关文章:

C++ - 将 JSON 或数组从中转换为 vector

c++ - 如何一起使用c和c++

c++ - 在给定的输出中找到最大值

algorithm - 实时绘制 1 像素粗的锯齿线

java - Java 中的红黑树或 AVL 树实现

c++ - 条件分支的模板和优化

algorithm - 如何实现无间隙 block 布局算法?

java - 在java中解析性能关键数据

c - 如何在c程序中扫描10^20或更大阶的数字?如何求大于 10^20 的数字平方的数字和?

ios - 使用谓词过滤字典数组