我尝试传入链接列表,然后删除不是数字的节点。我一直在接受分段错误,而且我不知道我在哪里找到一个不存在的指针。
void clean(node*& start)
while(start)
if(*is a number*){
node* tail = start;
while (tail->next){
node* temp = tail->next;
tail->data = temp->data;
tail = tail->next;
}
if (!tail->next)
delete tail;
}
start= start->next;
}
}
- >接下来是将节点链接到其余节点的内容。
答案 0 :(得分:0)
这段代码是各种错误的。内部循环是完全没有必要的,并且在外部循环的每次迭代中更新start
指针是根本错误的(每次调用head
时调用者都会丢失其列表的clean()
指针)。
代码应该看起来更像这样:
void clean(node* &start)
{
node *n = start, *prev = NULL, *next;
while (n)
{
next = n->next;
if (n->data is not a number)
{
if (prev) prev->next = next;
if (start == n) start = next;
delete n;
}
else
prev = n;
n = next;
}
}