C语言链表插入结点问题,请问代码中的stu*pc;的位置有什么说法吗

int main(void)
{
    stu*creat(void);
    void print(stu*head);
    stu*delete(stu*head,int num);
    stu*insert(stu*head,stu*s);     
    stu*pc;
    char c;
    char a[20];
    int n;
    stu*p;
    p=creat();
    print(p);
    printf("是否要删除结点(Y/N)?\n");
    scanf(" %c",&c);
    if(c=='Y'||c=='y')
    {
p:
        printf("请输入要删除的学号:\n");
        scanf("%d",&n);
        p=delete(p,n);
        print(p);
        printf("是否继续删除(yes/no)?\n");
        scanf("%s",&a);
        if(strcmp(a,"yes")==0)
        {
            goto p;
        }
    }
    printf("是否要添加结点(Y/N)?\n");
    scanf(" %c",&c);
    if(c=='Y'||c=='y')
    {
w:
        p=insert(p,pc);
        printf("请输入学生学号:\n");
        scanf("%d",&pc->num);
        printf("请输入学生姓名:\n");
        scanf("%s",pc->name);
        printf("请输入学生年龄:\n");
        scanf("%d",&pc->age);
        printf("请输入学生成绩:\n");
        scanf("%d",&pc->score);
        print(p);
        printf("是否继续添加(yes/no)?\n");
        scanf("%s",a);
        if(strcmp(a,"yes")==0)
        {
            pc=malloc(sizeof(stu));
            goto w;
        }
    }
    return 0;
}

,为什么stu*pc放在这个位置上到插入的时候突然死机了???

从你现有的这部分代码上看,你的pc指针没有实际开辟空间,所以再w标签下使用pc访问的num、name等成员进行赋值均会出现段错误异常。对于你提问的pc位置,按照C的语法就可以了,现在的位置没有问题的,不知道你具体想问什么

代码不全,不好判断,然后代码里 goto 语句还是尽量少用或不用。