在O(1)时间删除链表结点

xiaoxiao2025-06-04  48

// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 static void delete_node(std::shared_ptr<node_link<int>>& head, std::shared_ptr<node_link<int>>& del) { // 要删除的结点不是尾结点 if(del->next != nullptr) { auto next = del->next; del->data = next->data; del->next = next->next; } // 链表只有一个结点,删除头结点(也是尾结点) else if(head == del) { head = nullptr; } // 链表中有多个结点,删除尾结点 else { auto node = head; while(node->next != del) { node = node->next; } node->next = nullptr; } }

 

转载请注明原文地址: https://www.6miu.com/read-5031268.html

最新回复(0)