只想知道在这个删除链表的实现中是否有任何缺陷/不一致/内存泄漏:
// 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,所以应该不会有任何问题。
假设您的列表有指向节点的有效指针,并且头指针也是有效的,那么其他一切似乎都很好。