添加此功能时出现分段错误(核心已转储)

segmentation fault (core dumped) when adding this feature

我尝试向已经有效的代码添加功能。添加我的函数后,代码仍然执行,但是当我选择案例3时,我得到错误分段错误(核心转储) 如果我选择案例 3

,我会收到分段错误(核心转储)错误

这是案例 3 的函数:

typedef struct Note_
{
    int data;
    struct Note_ *next;
} Note;

Note *head= NULL;
int number= 0;


void deleteNote(int x){
    
 Note *t = head;
 Note *prev;

 if(t == NULL){
 printf("List already empty.\n");
 }
 while(t != NULL && t->data == x){
 head = t->next;
 free(t);
 t= head;
 printf("Note %d deleted.\n", x);
 }
 
 while(t != NULL){
 while(t != NULL && t->data != x){
 prev = t;
 t = t->next;
 }
 prev->next = t->next;
 free(t);
 t = prev->next;
 }
 
 }

在此代码段中

        prev->next = t->next;
        free(t);
        t = prev->next;

在前面的 while 循环之后指针 t 可以等于 NULL

    while(t != NULL && t->data != x)
    {
        prev = t;
        t = t->next;
    }

所以使用空指针访问内存就像在这个语句中

         prev->next = t->next;

调用未定义的行为。

你需要检查while循环后指针t是否不等于NULL.