我正在尝试使用最小值和最大值创建链接列表。这可能是一种非常愚蠢的方法,也许我应该使用 vector 来完成我想做的事情。
我在插入时遇到了很大的困难,我不知道为什么这不起作用,我已经投入了互联网,看了看我的书,但是没有任何东西能够使它起作用。也许是因为我使用的是智能指针,但我还没有100%的自信使用它们,但这是我的Node:
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/