引发了未经处理的异常:写入访问权限冲突。 NewList 是 nullptr。

习题11-7 奇数值结点链表 (20 分)中第2个函数一直提示nullptr报错
函数getodd将单链表L中奇数值的结点分离出来,重新组成一个新的链表。返回指向新链表头结点的指针,同时将L中存储的地址改为删除了奇数值结点后的链表的头结点地址(所以要传入L的指针)。
我的代码如下
struct ListNode* getodd(struct ListNode** L)
{
struct ListNode* NewList, *a=NULL, b;
// NewList = (struct ListNode
)malloc(sizeof(struct ListNode));
// NewList->data = 0;
NewList->next = NULL;
b = *L;
while (b != NULL)
{
if (b->data % 2 == 1 && a == NULL)
{
NewList->data = b->data;
NewList= NewList->next;
NewList->next = NULL;
a = b;
b = NULL;
b->next = a->next;
a = b;
}
else if (b->data % 2 == 1 && a != NULL)
{
NewList->data = b->data;
NewList = NewList->next;
NewList->next = NULL;
a->next = b->next;
a = b;
}
else
{
a = b;
b = b->next;
}
}

return NewList;

}

img

想知道怎么做不会报错

NewList->next = NULL;
NewList都没分配空间呢,你就操作next,必死啊
// NewList = (struct ListNode)malloc(sizeof(struct ListNode));
为什么要注释掉呢???