gpt4 book ai didi

c++ - 编写 LinkedList 析构函数?

转载 作者:IT老高 更新时间:2023-10-28 23:11:23 26 4
gpt4 key购买 nike

这是一个有效的 LinkedList 析构函数吗?我仍然对他们感到困惑。

我想确保我理解正确。

 LinkedList::~LinkedList()
{
ListNode *ptr;

for (ptr = head; head; ptr = head)
{
head = head->next
delete ptr;
}
}

所以在循环开始时,指针 ptr 被设置为保存头的地址,即链表中的第一个节点。然后将 head 设置为下一项,一旦第一次删除发生,它将成为列表的开头。 ptr 被删除,第一个节点也是如此。在循环的第一次迭代中,指针再次设置为 head。

我担心的是到达最后一个节点。条件“头”;应该检查它是否不为空,但我不确定它是否会起作用。

任何帮助表示赞赏。

最佳答案

为什么不把它做得更简单——用一个优雅的 while 循环,而不是仔 segmentation 析那个过于复杂的 for 循环是否正确?

ListNode* current = head;
while( current != 0 ) {
ListNode* next = current->next;
delete current;
current = next;
}
head = 0;

关于c++ - 编写 LinkedList 析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com