【正确答案】
D
【答案解析】[解析] 要删除链表中间的某个结点,只需要使它的前一个结点的next指针指向它的后一个结点-不过,严格来讲还需要使用free()函数释放掉该结点在内存中所占的空间。本题要删除的是q所指结点(以下简称q结点),只需使p结点的next指针指向r结点即可。选项A中, 因为 Q结点的next指向r结点,所以执行p->next=q->next;语句后p结点的next就指向了r结点,故选项A能完成删除。选项B中,p->next->next等价于q->next,因此也能完成删除。选项C直接让p->next指向r结点,当然可以删除。选项D使指针p指向q->next (即r结点),这样做不会影响到内存中的链表,所以应该选择D。