假设单链表结点结构为(data,next),删除指针 p 所指结点的后继结点 q 的语句序列是 ( )。 A.p->next=q->next; free(q); B.p->next=q; free(q); C.free(q);p->next=q->next; D.free(q);p->next=q;
时间: 2024-03-31 14:38:15 浏览: 71
以知L是无表头结点的单链表
5星 · 资源好评率100%
删除指针 p 所指结点的后继结点 q 的语句序列应该是 A.p->next=q->next; free(q);。这是因为:
- 首先需要将 p 的指针域指向 q 的后继结点,即 p->next=q->next;
- 然后需要释放 q 所指结点的内存空间,即 free(q)。
其他选项的语句序列有误:
- B.p->next=q; 会将 p 的指针域指向 q,而不是 q 的后继结点;
- C.free(q);p->next=q->next; 会先释放 q 所指结点的内存空间,再将 p 的指针域指向 q 的后继结点,这样就会导致 q 所指结点的内存泄漏;
- D.free(q);p->next=q; 会先释放 q 所指结点的内存空间,再将 p 的指针域指向 q,这样就会出现指针悬挂的情况。
阅读全文