第29015题 单选题
在C++单链表操作中,当仅能访问待删除节点且该节点非尾节点时,下列哪个操作可以正确删除该节点并释放其占用的内存?

已知单链表节点定义如下:

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(nullptr) {}
};

现有一个存在于非空单链表中的节点p,我们无法获取该节点的前驱节点,且p并非链表的尾节点。

A

p = p->next; delete p;,将p指向其后继节点后删除p,完成删除操作

B

p->next = p->next->next; delete p;,修改p的next指针后直接删除p,完成删除操作

C

ListNode* temp = p->next; p->val = temp->val; p->next = temp->next; delete temp;,将后继节点的值复制到当前节点,删除后继节点以等价删除原节点

D

delete p; p = nullptr;,直接释放p节点内存并将指针置空,完成删除操作

程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析