我将如何清除链表
How would I clear a linked list?
我一直在尝试编写最短路径算法,dijkstras算法,找到前两个顶点的最短路径工作得很好。我在尝试清除链表和优先级队列时遇到了问题。
class llNode {
public:
int id;
int source;
int weight;
llNode* next;
llNode(int key, int distance, int from) {
id=key;
weight=distance;
source=from;
next = NULL;
}
};
class lList {
private:
llNode* root;
llNode* end;
void clearAll(llNode* toClear);
public:
lList() {
root = NULL;
}
void add(llNode* toAdd) {
if ( root == NULL) {
root = toAdd;
end = toAdd;
return;
}
end->next = toAdd;
end=end->next;
}
bool isFound(int key) {
for(llNode* ii= root; ii != NULL ; ii=ii->next) {
if ( ii->id == key) {
return true;
}
}
return false;
}
void clearAll();
};
void lList::clearAll() {
clearAll(root);
}
void lList::clearAll(llNode* toClear) {
if(toClear == NULL) {
return;
}
clearAll(toClear->next);
toClear=NULL;
}
除了这些清晰的方法外,我还尝试简单地将root设置为NULL,并且还尝试遍历列表并在每个元素上使用删除。我不得不使用这些方法中的任何一种。根一直设置为无效位置,我收到访问冲突错误。
有没有我只是没有看到的简单东西?我将如何从链表中删除每个元素?
您需要遍历每个元素并将其删除伪代码
Set pointer to root
While(pointer !=null)
{
temp=pointer->next;
delete[] pointer;
pointer = temp;
}
将
root
设置为NULL
将删除整个列表。
void lList::clearAll() {
root = NULL;
}
你说你试过这个。 在这种情况下,您的访问冲突是如何发生的?
当心:我的代码可能包含内存泄漏! 您可能希望浏览列表并释放每个项目,除非使用其他机制恢复它们的内存。
相关文章:
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 链表,反向函数,数据结构
- 使用std::list创建循环链表
- 链表的泛型函数remove()与成员函数remove)
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 我们可以删除链表中静态内存中的节点吗
- C++,指针数组,指向双链表中的条目
- 链表中写入访问冲突的未知原因
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 打印所有链表的元素 (C++)
- 错误:需要类名(链表c++)
- 为什么C中的通用链表中存储的数据已损坏
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 链表c++插入,所有情况都已检查,但没有任何工作
- 不知道如何在 c++ 中清除链表?
- 我将如何清除链表
- 如何使用析构函数清除链表内存,而不会出现valgrind错误?[更新:操作员过载帮助]