在不带哨兵结点的双向链表中,结点 p 既不是头结点也不是尾结点。删除 p 的正确代码是( )。
p
struct Node { int value; Node *prev; Node *next; };
p->prev = p->next; p->next = p->prev; delete p;
p->prev->next = p; p->next->prev = p; delete p;
p->prev->next = p->next; p->next->prev = p->prev; delete p;
p->next = p->prev; p->prev->next = nullptr; delete p;