沉梦昂志__ 2021-05-17 07:56 采纳率: 50%
浏览 34
已采纳

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放在这个位置上到插入的时候突然死机了???

  • 写回答

2条回答 默认 最新

  • 夏一水@ 2021-05-17 09:01
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分