#3546. [GESP202512 五级 C++] 第 3 题

[GESP202512 五级 C++] 第 3 题

下面关于单链表和双链表的描述中,正确的是( )。

struct DNode {
    int data;
    DNode* prev;
    DNode* next;
};

// 在双链表中删除指定节点
void deleteNode(DNode* node) {
    if (node->prev) {
        node->prev->next = node->next;
    }
    if (node->next) {
        node->next->prev = node->prev;
    }
    delete node;
}

struct SNode {
    int data;
    SNode* next;
};

// 在单链表中删除指定节点
void deleteSNode(SNode* head, SNode* node) {
    SNode* prev = head;
    while (prev->next != node) {
        prev = prev->next;
    }
    prev->next = node->next;
    delete node;
}

{{ select(1) }}

  • 双链表删除指定节点是 O(1)O(1),单链表是 O(1)O(1)
  • 双链表删除指定节点是 O(n)O(n),单链表是 O(1)O(1)
  • 双链表删除指定节点是 O(1)O(1),单链表是 O(n)O(n)
  • 双链表删除指定节点是 O(n)O(n),单链表是 O(n)O(n)