泫溯 2024-10-02 00:43 采纳率: 94.7%
浏览 13
已结题

如何取消对NULL指针p的引用


void Add(CircleList L) {
    int a;
    CircleList p=NULL; 
    
    p->next = NULL;

    p = L->next;
    while (scanf_s("%d", &a))
    {
        
        p->data = a;
        p->next = NULL;
        p = p->next;
        printf("%d ",a);
    }
}

求这里为什么总是运行不了啊,/(ㄒoㄒ),它总是说取消对NULL指针p的引用,怎么取消啊

  • 写回答

1条回答 默认 最新

  • 浪客 2024-10-02 01:21
    关注

    6,8行互换位置,p->next = NULL;的前提是p指向CircleList 变量而不是NULL,在加个p的判断

    void Add(CircleList L) {
        int a;
        CircleList p=NULL; 
     
        p = L->next;
        
        //if(!p)return; //p为NULL结束函数,也可以给出提示,或者分配内存    
        //p->next = NULL;  
    
        while (!p)  //也可以在循环里判断p是否为空
        {
            scanf_s("%d", &a)
            p->data = a;
            //p->next = NULL; 这句会截断链表
            p = p->next;
            printf("%d ",a);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月2日