![](/img/trans.png)
[英]deleting a node in linked list,if the element is not there then the function clears the whole list and i am unable to get it back
[英]Am I safely deleting a linked list?
只想知道此删除链表的实现中是否存在任何缺陷/不一致/内存泄漏:
// Function to delete the entire linked list
void deleteList(Node** head) {
Node* current = *head;
Node* next;
while (current != 0) {
next = current->next;
delete current;
current = next;
}
*head = 0;
}
编辑:
struct Node {
int data;
Node* next;
Node(int data) : data(data){}
};
如果您通过引用而不是通过指针传递头指针,那将是更多的C ++:
void deleteList(Node * & head)
{
// (...)
head = nullptr; // NULL in C++ pre-11
}
另外,为了使代码更整洁,可以在循环内移动next
声明:
while (current != 0)
{
Node * next = current->next;
delete current;
current = next;
}
我唯一担心内存泄漏的问题是正确释放节点的内容,但是由于您存储的是简单的int,因此那里应该没有任何问题。
假设您的列表具有指向节点的有效指针,并且头部指针也有效,那么其他所有内容似乎都很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.