好的,所以我正在研究一个删除与读入输入同名的节点的函数。如果匹配,则不得将该节点添加到新序列中。所以这就是我到目前为止得到的,我之前的指针在代码末尾为 null,我不知道为什么
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;
}
}
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
每当执行if时。第一次,previous is same as ptr.
从下一个开始,我正在链接previous -> next to ptr.
现在循环后,您可以打印头部为 previous_head
的存储节点的整个列表;