【发布时间】:2018-01-06 12:41:53
【问题描述】:
我正在使用带有递归插入函数的单链表制作字典,该函数目前可以完成它的工作。 我有两个来自社区的请求:
我想知道是否有人可以查看我的代码并告诉我是否有任何内存泄漏,如果有,我应该如何删除它们。
通过查看其他列表,我发现它们都使用尾节点。为什么需要这样做?
void dictionary::insert(Key k, Item i)
{
if (head == nullptr)
{
head = new Node(k, i);
}
else insertRec(k, i, head);
}
void dictionary::insertRec(Key k, Item i, Node* current)
{
Node* temp;
if (current->key == k)
{
current->item = i;
}
else if(current->nextNode != nullptr)
{
insertRec(k, i, current->nextNode);
}
else if (current->nextNode == nullptr) {
temp = new Node(k, i);
current->nextNode = temp;
}
}
【问题讨论】:
-
可能这更适合codereview.stackexchange.com
-
1:也许,也许不是。 2:如果您需要快速访问尾部,它会有所帮助。这确实更适合codereview.stackexchange.com,但请记住也要发布
Node结构,包括您使用的构造函数。最好是Minimal, Complete, and Verifiable Example。 -
通常是
list不比较它的内容,所以有一个尾巴并在那个位置插入是相当合理的方法。 -
啊,我不知道这存在。谢谢你。在此示例中,您将如何添加尾节点?
-
好吧,
list通常是没有概念的key,既然你有,有尾巴也没多大用处。
标签: c++ dictionary singly-linked-list