双链表结点定义如下,若要删除双链表中的中间结点(非首尾节点) p ,写法正确的是( )。 class Node: def __init__(self, val): self.val = val self.prev = None self.next = None
A:p.prev.next = p.nextp.next.prev = p.prevdel p
B:p.next.prev = p.nextp.prev.next = p.prevdel p
C:p.prev = p.nextp.next = p.prevdel p
D:p.next.next = p.prevp.prev.prev = p.nextdel p
正确答案:A
答案解析
删除双链表中间节点需调整其前驱和后继节点的指针。前驱节点的next应指向当前节点的后继,后继节点的prev应指向前驱。原节点的prev和next被断开后,可释放该节点内存。指针修改顺序不影响逻辑正确性,只要最终完成双向连接的重连。del用于释放节点占用的资源。选项中的赋值对象和引用关系必须对应节点的实际链接方向,错误的赋值将导致指针指向不合法或形成环。
试卷来源:202606 CCF-GESP编程能力等级认证Python五级真题