在c++中创建具有x和y最小和最大范围的单链表
Creating a singly linked list with an x and y minimum and maximum range in C++
我试图使用最小值和最大值创建一个链表。这可能是一种非常愚蠢的方法,也许我应该使用向量来完成我想要做的事情。
我有一个非常困难的时间插入,我不知道为什么这是不工作,我倒了互联网,看了看我的书,但没有得到这个工作。也许是因为我正在使用智能指针,我还没有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;
}
希望能有所帮助。
你是无条件递归的,所以永远不会终止。
假设您想要在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;
}
相关文章:
- 如何找到2个单链表的公共节点
- 对单链表的混淆
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 在单链表前面添加一个节点后,我无法遍历每个节点
- 具有完整五法则的简单链表
- 在 C++ 中实现简单链表时出现问题,没有输出
- 在析构函数中删除单链表的正确方法是什么?
- 移动语义 c++ 单链表
- 单链表时间
- 带有unique_ptr的通用单链表,MS visual studio C++中存在未知错误
- 使用 std::unique_ptr 的通用单链表,Visual Studio C++ Microsoft中存在未知的反
- 删除单链表列表
- 在单链表中的后端插入节点
- 合并单链表上的排序
- 简单链表与下一个>下一个交换
- 我试图键入一个函数来在单链表的末尾添加一个节点,但不起作用
- 单链表分配问题 (nullptr)
- 多对象手写单链表中的分段错误
- 在c++中创建具有x和y最小和最大范围的单链表
- 删除单链表中特定数字范围之外的节点