删除节点并更改头部

时间:2016-03-17 18:08:37

标签: c++11 linked-list nodes

好的,所以我正在开发一个删除与读入输入同名的节点的函数。如果匹配,则不能将该节点添加到新序列中。 所以我到现在为止,我的前一个指针在代码末尾是空的我不明白为什么

void deleteRecord (ifstream &batchfile, node *&h)
{
ofstream logfile;
logfile.open("freeplay.log", ios::app);
node *ptr = h;
node *previous = nullptr;
string term;
batchfile.seekg(1L, ios::cur);
getline(batchfile, term);
while (ptr)
{
    if (!strstr(ptr -> name.c_str(), term.c_str()))
    {
        previous = ptr;
    }
    previous = previous -> next;
    ptr = ptr -> next;
}

}

1 个答案:

答案 0 :(得分:0)

while (ptr)
{
    if (!strstr(ptr -> name.c_str(), term.c_str()))
    {
        if(previous = nullptr){
            previous = ptr;
            head_previous = previous;
        } else {
            previous->next = ptr;
            previous = previous -> next;
            previous->next = null;
        }
    }

    ptr = ptr -> next;
}

在这里,无论何时执行,我都会分配previous to ptr。第一次previous is same as ptr.从下一次开始,我正在关联previous -> next to ptr. 现在循环之后,您可以打印头部为previous_head;

的整个存储节点列表