我想知道是否有可能(它应该像std :: list似乎这样做)在单个链接列表中实现一个常规时间的PopBack()操作以及如何操作?
我假设我们存储了头尾指针。在这种情况下,PushBack(),PushFront(),PopFront()可以在恒定时间内轻松实现。但是想不出用相同的运行时间实现PopBack()的方法。
答案 0 :(得分:4)
您无法在固定时间内为单个链接列表实施pop_back
。要做到这一点,你需要知道在最后一个元素之前的前一个元素应该包含对前一个元素的引用。如果是这样,那么你将有一个双链表。
您可以在恒定时间内填充push_back
。我对C ++标准的一个建议是引入支持std::x_forward_list
成员函数的push_back
。在这种情况下,您将能够使用这样的单个链表来模拟队列。