在双向链表的删除操作中,给定指向待删除节点p的指针,以下哪种操作序列在任何情况下都能保证链表的逻辑结构正确性,且避免产生野指针?

答案解析

选项A错误,在执行free(p)后,p指向的内存被释放,此时再访问p->next->prior将导致未定义行为或程序崩溃。选项B错误,虽然先修改指针,但是其仍然存在访问已经释放内存的问题,依然可能出现野指针错误。选项C错误,在free(p)之后再访问p的成员变量是不合法的,同样会导致未定义行为。选项D正确,首先修改了待删除节点的前驱节点的next指针和后继节点的prior指针,将待删除节点从链表中移除,然后再释放其内存,确保操作的正确性和安全性。只有在修改完前后指针后再释放内存才能避免野指针问题。
正确答案:D
随机推荐
开始刷题