Y_csgoto 2019-03-04 22:51 采纳率: 66.7%
浏览 315
已采纳

为什么这个静态链表一运行到指定位置程序就会崩溃?

#define apple sizeof struct fate
void Dynamic()
{


    typedef struct fate
{int age;
struct fate*p;}FATE;//自定义FATE作为结构体简称


FATE*head,*a,*b,*p1;//定义指向每个节点的指针

head=a=b=(struct fate*)malloc(apple);//开辟第一个位置

scanf("%d",&(*head).age);//导入第一个数据


if(head->age!=0)//第一次输入数据后的判断
{

    a=b=(struct fate*)malloc(apple);//开辟第二个位置
    if(a=NULL)//判断开辟函数是否执行成功
        printf("分配失败");
    else
    {       head->p=a;
scanf("%d",&(*a).age);//经测试,一运行到这里就开始崩溃


if(a->age!=0)
{
    b=(struct fate*)malloc(apple);
if(b=NULL)
        printf("分配失败");
    else
    {a->p=b;
scanf("%d",&(*b).age);}
}



p1=head;

while(p1!=0)
{printf("%d",p1->age);
p1=p1->p;

}}}
free(head);//释放内存
free(a);
free(b);
}

主函数就是定义与调用这个函数,但是只要一输入第二个数据,程序就会崩溃,即控制台程序出现“windows发现问题,正在检测”的提示,求问各位大佬,这是什么情况?

  • 写回答

1条回答

  • caitzh 2019-03-05 17:47
    关注

    因为这两句 if(a=NULL)if(b=NULL) 写错了,应该是 == 两个等号

    写一个等号变成了赋值,使得 a 的值为 NULL

    之后在运行 scanf("%d",&(*a).age); 这句的时候,对 a*a ,所以出错。

    另外,你没有把链表最后一个元素的 p 指针赋值为 NULL,在运行 while(p1!=0) 的时候可能会出现死循环。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码