问一下我写的链表清空模块为啥跑不起来?

//其他没毛病,就清空跑不来
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
struct student
{
    char name[10];
    struct student *next;
};
//打印 
void list(struct student *p)
{
    if(p->next ==NULL)
    {
        printf("没了没了");
    }
    else if(1)
    {
        while(1)
    {
        printf("%s\n", p->name);
        if(p->next != NULL)
        {
            p = p->next ;
        }
        else
        {
            break;
        }
    }
    }
    
}
//创造 
struct student *create()
{
    struct student *head, *current, *next;
    int n = 2;
    head = ((struct student *)malloc(sizeof(struct student)));
    strcpy(head->name   , "小李");
    current = head;
    while(n--)
    {
        next = ((struct student *)malloc(sizeof(struct student)));
        strcpy(next->name , "皮卡丘");
        
        current->next = next;
        current = next;
    
    }
    current->next  = NULL;
    return head;
     
}
//清空 
struct student *cc(struct student *p)
{
    struct student *current, *q;
    current = p;
    while(current->next !=NULL)
    {
        q = current->next ;
        delete(current);
        current = q;
    }
    current->next =NULL;
    printf("删除完了");  
    return p;
}
//主模块 
int main()
{
    struct student *p;
    p = create();
    list(p);
    cc(p);
    list(p);
     
    return 0;
}

你删除最后要更新p,而不是更新current
改为p->next = NULL;

img