void createnode(int data)
{
node *temp=new node;
temp->data=data;
if(head==null)
{
head=temp;
tail=temp;
temp=null;
}
else
{
tail->next=temp;
temp=null;
}
}
我现在应该删除temp吗? 我将使用另一个函数删除每个节点。够了吗?
答案 0 :(得分:0)
首先,temp
为null,因此将其删除将是空操作。
如果您在此功能中询问是否应删除new node
的结果,答案是“不,您不应该”。如果这样做,该列表将保留悬空的指针。正确的方法是在从列表中删除节点时,在删除列表本身时删除节点等。
答案 1 :(得分:0)
您需要阅读一些有关指针和内存的基本知识。
delete
用于从内存中删除某些内容。在这种情况下,这就是用于存储节点内容的堆变量。显然,这是在删除节点时准确完成的。
将temp
设置为nullptr
之后,它不再代表(/指向)任何内存。调用delete毫无意义。 (从技术上讲,这是无害的,但是在代码中包含无用的行仍然不好。)
我建议您阅读一下堆栈和堆是什么,为什么堆需要新的堆并在堆不需要时删除它们。这可能会为您清除一切。
答案 2 :(得分:0)
我现在应该删除temp吗?我将使用另一个功能 删除每个节点。
否。
正如您的函数名所建议的那样,它是createNode()
(读作 create 节点)。
此功能的重点是通过创建和链接节点来构造列表;
不要删除它们。
仅在破坏列表或要从列表中删除(或删除)节点时删除。
注意:
将temp
重命名为“ newNode” ,并且不要将其设置为null
,以免悬空指针。