嵌入式点灯小白 2022-03-15 09:37 采纳率: 50%
浏览 168

引发了未经处理的异常:写入访问权限冲突。 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

想知道怎么做不会报错

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-03-15 09:51
    关注

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

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月15日