我正在研究数据结构,并对堆栈和队列的不同实现中的时间复杂性有所怀疑。
对于队列,如果元素可以在头部或尾部排队,则动态数组实现会在结束和开始时为O(1)分摊的时间进行插入。链表实现提供了O(1)实现。
对于堆栈,如果可以在列表的开头或末尾添加节点,则单个链接列表和数组实现都将给出O(1)时间复杂度。
我是对的还是我错过了什么?
答案 0 :(得分:0)
如果在下一个插入位置保持索引,则插入操作将花费一定的时间,因此O(1)是正确的。
但如果没有维护索引,那么我们需要搜索插入新元素的正确位置,插入此元素所需的时间将随着数据结构中元素的数量线性增加,因此插入时间在此案件将是O(n)