【发布时间】:2022-01-05 08:36:33
【问题描述】:
我已经创建了这个函数,我想删除链表中的所有节点。但是,它似乎不起作用,只删除了第一个节点 (?)。
void deleteList(Node* &pTemp) {
Node *pCurrent = pTemp;
Node* next = NULL;
while(pCurrent != NULL) {
next = pCurrent -> nextNode;
free(pCurrent);
pCurrent = next;
}
}
我该怎么做才能删除每个节点,但仍然有一个空列表?
【问题讨论】:
-
1.请提供一个最小的工作示例。 2. 看起来您不需要在 while 循环之外声明或初始化
next。 3.在C++中,我们使用nullptr作为空指针,使用new和delete操作符进行分配/释放。 -
你永远不会修改
pTemp,在取消引用时给调用者留下一个悬空指针和未定义的行为。 -
在循环结束后添加
pTemp = NULL;(或者,至少在将pTemp分配给pCurrent之后)。 -
请提供足够的代码,以便其他人更好地理解或重现问题。