这里使用未初始化的内存是什么意思啊,怎么改啊

void Josephu(LNode*& L, int n,int s,int m) //n个人,从s开始,数到m出列
{

LNode* p = L;
LNode* q;
//q = (LNode*)malloc(sizeof(LNode));
    for (int i = 1; i <= n; i++)
    {
        
        if (p->data == s)
            break;
        p = p->next;   //找出s的位置,并用p记录
    }

    printf("依次出列的顺序为:\n");
    for (int i = 0; i < n; i++) //n次出列
    {
        
        int j = 1;
        while (j < m)
        {
            p = p->next; //依次报数,当j=m时,结束循环,找到相应的p结点
            j++;

        }

       printf("%d ", p->data);
    
        //将当前数据域输出,并修改当前数据域为下一结点的数据域,并修改当前的数据域为下一结点的数据域,
        //同时指向下一结点的下一结点,用来删除当前结点
        q = p->next; //用q保存p的下一结点
        p->data = p->next->data;//p的数据域改为下一结点的数据域
        p->next = p->next->next;//指向下一结点
        free( q);

    }
}

img

img

img

q你给他初始化,


LNode* q=nullptr;