在单链表、双向循环链表和单循环链表中,若仅知道指针 p 指向某结点,不知道头指针,能否将结点 p 从相应的链表中删除?若可以,时间复杂度各为多少。
在单链表、双向循环链表和单循环链表中,若仅知道指针 p 指向某结点,不知道头指针,能否将结点 p 从相应的链表中删除?若可以,时间复杂度各为多少。
正确答案:要实现删除 p 结点的操作,必须找到其前驱结点,修改其指针域的值使其指向 p 的后继结点,以实现删除结点 p 。单链表不行,因此不知道头指针就无法找到结点 p 的前驱结点。双向循环链表和单循环链表可以可以实现删除 p 结点。单循环链表删除 p 结点的时间复杂度为 O(n) ,双循环链表删除 P 结点的时间复杂度为 O(1) 。