연결리스트 질문

#include <stdio.h>
#include <stdlib.h>

typedef int element;
typedef struct ArrayList {
    element data;
    struct ArrayList* link;
}ArrayList;

ArrayList* insert_first(ArrayList* head, int value)
{
    ArrayList* p = (ArrayList*)malloc(sizeof(ArrayList));
    p->data = value;
    p->link = head;
    head = p;
    return head;
}

int main(void) {
    ArrayList *list = NULL;
    insert_first(list, 41);
    printf("%d\n",list->data);
    return 0;
}

함수인자전달 할때 잘못된건지 아니면 list에 NULL이 잘못인지 코드 실행시키면 값이 출력이 안되네요
뭐가 문제인지 모르겠어요 도와주세요

main함수의 list가 NULL이라서 죽는겁니다. 디버깅 해보세요

한줄씩 실행해보세요