从单向链表中删除节点 C



我很难弄清楚为什么我的删除功能不起作用。它是一个布尔值,如果删除了项目,则需要返回。任何帮助将不胜感激

boolean delete(SLL *list, String str){
    NODE *current, *previous,*temp;
    temp=malloc(sizeof(Employee));
    previous=NULL;
    current = list -> head;

    while(current->next!=NULL) {
        if(strcmp(current->anEmployee->name, str) == 0){
            if(current=list->head){
                list->head=current->next;
            }
            if(previous->next == NULL){//item not found in list
                return 0;
            }
        else { //current is to be deleted
            temp->next=current->next;
            previous->next=temp->next;
            return 1;
        }
    }
}

将当前与列表>head(最初是列表的根节点)进行比较的if语句是将节点分配给当前节点,而不是比较它。

在编写代码之前,您需要了解在删除链表中的节点时应处理的各种情况。以下内容可能会对您有所帮助。

  1. 从链表中删除节点

  2. 删除链表中具有特定值的所有节点

相关内容

  • 没有找到相关文章

最新更新