题目:

  删除链表内地某节点, 要求时间复杂度为O(1).

解答:

  void delete_node(Node *head, Node *node) {

    Node *next = node->next;

    if(next==NULL) { /* if the node is the tail of the list */

      Node *curr_node = head;

      while(curr_node->next!=node) { curr_node= curr_node->next; }

      curr_node = NULL;

      delete node;

      return;

    }

    memmov(node, next, sizeof(Node));

    delete next;

  }

  其实这个办法删除的只是node的内容, 而真正删除的是node->next节点.

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2022-12-23
  • 2021-06-26
  • 2022-01-05
  • 2021-07-18
猜你喜欢
  • 2022-02-09
  • 2022-12-23
  • 2021-11-10
  • 2022-01-05
  • 2022-02-05
  • 2021-10-31
  • 2022-02-01
相关资源
相似解决方案