我在链接的字符列表中使用以下代码。但是每当我运行这个程序时,我都会遇到运行时错误。
void ldellist(Node *head,char k)
{
Node *remove=head;
Node *previous=head;
while(remove->data!=k)
{
remove=remove->next;
}
while(previous->next!=remove)
{
previous=previous->next;
}
previous->next=remove->next;
free(remove);
}
有人能告诉我这是什么问题吗?
答案 0 :(得分:0)
也许你需要做一些检查?
void ldellist(Node *head,char k) {
Node *remove=head;
Node *previous=head;
while(remove && remove->data!=k) {
remove=remove->next; }
while(previous && previous->next!=remove) {
previous=previous->next; }
if (remove) {
previous->next=remove->next;
free(remove);
} else {
// print some error like 'not found'
}
}
答案 1 :(得分:0)
如果要删除的节点是head,你将获得“remove”等于“head”,条件“previous-> next!= remove”将始终为true。