【发布时间】:2017-11-05 22:04:16
【问题描述】:
我想知道是否有任何类似最简单的节点可以从 LinkedList 中删除或删除。
我知道从中间删除一个节点需要更改前面的节点链接,而从开头删除需要更改指向新头的指针,从末尾删除需要更改列表的新结尾。
但是,如果要求从 LinkedList 中删除一个更容易的节点,应该首选哪一个?
【问题讨论】:
-
如果您需要删除的节点是第一个节点,这可能比中间节点更容易。但肯定有要删除的特定节点,而不是首选节点。
-
第一个节点是否也比最后一个节点更容易,或者它们是否具有相同的复杂性?
-
在所有情况下,它都涉及更改指向要删除节点的指针。所以:你需要访问它。
-
我从来没有遇到过删除最容易要删除的数据而不是实际要删除的数据的问题。
-
“最简单”的节点可能有很多含义。一个简单的方法是最简单的应该是最快的。结构的头部具有 O(1) 的复杂度。如果您的结构有一个指向列表末尾的点,那么删除第一个需要与最后一个相同的时间。如果你只有一个指向头部的指针,那么最快的就是头部。
标签: c data-structures linked-list