九袂 发表于 2020-12-1 19:51:59

关于删除链表的问题

......
void del_dorm(Dorm **firstlist,char name)
{
        Dorm *head;
        Dorm *previous;
       
        head = *firstlist;
        previous = NULL;
       
        while(head != NULL && !(strcmp(previous->name,name)))
        {
                previous = head;
                head = head->next;
        }
        if (head == NULL)
        {
                printf("未能找到数据");
                return;
        }
        else
        {
                if(previous == NULL)
                {
                        *firstlist = previous->next;
                        free(previous);
                }
                else
                {
                        previous->next = head->next;
                        free(previous);
                }
                printf("删除成功!");
        }
}
程序执行,删除链表中 程序会卡住然后崩掉,求助大佬们!{:10_285:}

jackz007 发表于 2020-12-1 21:49:08

void del_dorm(Dorm ** firstlist , char name[])
{
      Dorm * p , * q                                                                           ;
      for(q = NUULL , p = * firstlist ; p && strcmp(p -> name , name) ; q = p , p = q -> next) ;
      if(p) {
                if(! q) * firstlist = p -> next                                                ;
                else q -> next = p -> next                                                       ;
                free(p)                                                                        ;
      } else {
                fprintf(stderr , "未能找到数据\n")                                             ;
      }
}
页: [1]
查看完整版本: 关于删除链表的问题