【发布时间】:2012-12-06 08:52:04
【问题描述】:
在一次采访中,我被要求为链表编写一个插入函数,以这样的方式插入后,与插入元素相比,插入元素头部的元素应该更大,而尾部的元素应该更小元素。
我在我的代码中实现了以下步骤:
- 最初按降序对链表进行排序。
- 获取元素。
- 以这样的方式插入元素,即使插入后链表也将按降序排列。
但有人告诉我,我的方法效率不高。
请告诉我是否有有效的方法来达到同样的效果。
【问题讨论】:
-
我认为他们希望您假设链接最初已经排序,并且您的插入应该保持这种排序。 (我会在采访中问这是否确实是意图)。在这种情况下,不需要排序 - 只需迭代直到找到插入位置并插入它。
-
@amit: 不,链接的开头没有排序。
-
对我来说,@amit 的解释是唯一有意义的。我也想请面试官澄清一下。
-
好的,所以列表没有排序,你也不能排序。除了插入新元素之外,您是否允许/期望对该列表进行任何更改(例如置换元素)?
-
partition?
list.insert(partition(list.begin(),list.end(),element_greater_than(value)),value).
标签: c++ c data-structures linked-list