【发布时间】:2020-05-14 03:45:12
【问题描述】:
我一直在尝试将链表的头部和尾部存储到向量中并将其用作容器。 所以向量将有 { head_1stLL, tail_1stLL, head_2ndLL, tail_2ndLL ...}
问题是当我试图清理这个向量中的链表时。我找不到删除链表的方法。 调用 CleanVector 后,我使用 target.clear()。 向量似乎是空的,但我仍然将内存分配给以前的链接列表并且能够访问所有内容。
为了简单起见,在我大修我的代码以使用 2D 矢量之前,我很想知道出了什么问题。
struct node
{
Document doc;
node* next;
node* prev;
char LBnType; //Leg type and base definition
}
void cleanVector(std::vector <node*> &target)
{
node* temp;
if(target.size()%2 ==0 )
{
while(!target.empty())
{
node* head = target.front();
temp = head;
target.erase(target.begin());
node* tail = target.front();
target.erase(target.begin());
deepCleanLL(head, tail);
if(temp != NULL) // here it says not deleted
{
cout << "FAILED TO DELETE" << endl;
printList(temp); //this was to test if I can still access LL
}
}
}
else
cout << "ERROR: nodeDeepCleanVector. Target size not even" << endl;
}
void deepCleanLL(node* &begin, node* &end)
{
node* current = end;
node* temp = begin;
while(current == NULL)
{
node* currentLag = current;
current = current->prev;
current->next = NULL;
current->prev = NULL;
delete currentLag;
currentLag = current;
}
if(temp != NULL)
{//temp here says LL is cleaered
cout<< "delete failed" << endl;
printList(temp);
}
}
【问题讨论】:
标签: c++ vector linked-list