组词大全

在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和( )。A、q=p B、

在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和( )。A、q=p B、q->next=p C、p=q->next D、p->next=q

在不带头结点的单循环链表中,尾节点q的next指针始终指向头节点。当删除第一个节点(p指向的节点)时,需完成两个关键操作:一是更新头节点指针p,二是维持链表的循环结构。

关键分析步骤:

更新头节点指针:原头节点为p,删除后新头节点是原p的下一个节点,因此执行p = p->next;,使p指向新头节点。

维持循环结构:原尾节点q的next指针指向旧头节点(原p),删除旧头节点后,需让q->next指向新头节点(新p),否则链表会断裂。因此需补充q->next = p;,确保尾节点仍指向新头节点,保持循环特性。

选项验证:

A. q=p:错误,会导致尾节点指针q指向新头节点,丢失原尾节点。

B. q->next=p:正确,尾节点q的next指针更新为新头节点p,维持循环链表结构。

C. p=q->next:错误,此时q->next仍指向已删除的旧头节点,导致p指向无效节点。

D. p->next=q:错误,会使新头节点的next直接指向尾节点,跳过中间节点,破坏链表完整性。

答案:B。执行q->next = p;后,尾节点q指向新头节点p,链表保持循环结构,且q仍为尾节点、p仍为头节点。

相关成语


成语首拼