C 尝试删除链接列表的第一个节点时的奇怪行为
我正在编写一个delete函数,通过搜索教室、名字、姓氏等参数来删除等待列表中的条目。该函数适用于位于链表中部或尾部周围的任何条目。但是,如果搜索的条目是第一个节点,则在输出中会收到奇怪的字符,如果在此之后尝试退出程序,则会发生崩溃C 尝试删除链接列表的第一个节点时的奇怪行为,c,linked-list,C,Linked List,我正在编写一个delete函数,通过搜索教室、名字、姓氏等参数来删除等待列表中的条目。该函数适用于位于链表中部或尾部周围的任何条目。但是,如果搜索的条目是第一个节点,则在输出中会收到奇怪的字符,如果在此之后尝试退出程序,则会发生崩溃 struct request* delete_from_list(struct request *list){ if(list == NULL) { printf("The list is empty so delete can n
struct request* delete_from_list(struct request *list){
if(list == NULL)
{
printf("The list is empty so delete can not be performed");
}
struct request *ptr = list;
struct request *ptr1 = NULL;
char classroom[ROOM_LEN];
char first[NAME_LEN+1];
char last[NAME_LEN+1];
printf("Enter the class room: \n");
read_line(classroom, ROOM_LEN);
printf("Enter the child's first name: \n");
read_line(first, NAME_LEN);
printf("Enter the child's last name: \n");
read_line(last, NAME_LEN);
//Check for the entry in the list
while(ptr != NULL)
{
if(strcmp(ptr->classroom, classroom) == 0)
if(strcmp(ptr->first, first) == 0)
if(strcmp(ptr->last, last) == 0)
break;
ptr1 = ptr;
ptr = ptr->next;
}
if(ptr != NULL)
{
if(ptr == list)
list = list->next;
else
ptr1->next = ptr->next;
free(ptr);
printf("\n%s %s is deleted from the waiting list for %s classroom", first, last, classroom);
}
else if(ptr == NULL)
{
printf("%s %s is not found in the waiting list for %s classroom", first, last, classroom);
}
return list;
}
案例“d”:从列表(等待列表)中删除列表;用户被要求输入一个操作码,然后它进入了一个开关。它成功了,谢谢您的帮助。@user3121023将其作为答案写下来。